Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: Lustre 2.8.0
    • Fix Version/s: Lustre 2.8.0
    • Labels:
    • Environment:
      sles12
    • Severity:
      3
    • Rank (Obsolete):
      9223372036854775807

      Description

      build fails in gss code. not noticed until very recently due to commonly doing builds in environments without kerberos support or with --disable-gss. lustre configured --disable-gss builds and runs fine.

      example errors:

        CC [M]  /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.o
      /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c: In function ‘request_key_unlink’:
      /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:121:37: error: ‘const struct cred’ has no member named ‘tgcred’
       #define key_tgcred(tsk) ((tsk)->cred->tgcred)
                                           ^
      /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:649:18: note: in expansion of macro ‘key_tgcred’
         ring = key_get(key_tgcred(tsk)->process_keyring);
                        ^
      In file included from include/linux/srcu.h:33:0,
                       from include/linux/notifier.h:15,
                       from include/linux/memory_hotplug.h:6,
                       from include/linux/mmzone.h:830,
                       from include/linux/gfp.h:4,
                       from include/linux/kmod.h:22,
                       from include/linux/module.h:13,
                       from /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:43:
      /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:121:37: error: ‘const struct cred’ has no member named ‘tgcred’
       #define key_tgcred(tsk) ((tsk)->cred->tgcred)
                                           ^
      include/linux/rcupdate.h:521:11: note: in definition of macro ‘__rcu_dereference_check’
         typeof(*p) *_________p1 = (typeof(*p)*__force )ACCESS_ONCE(p); \
                 ^
      include/linux/rcupdate.h:709:28: note: in expansion of macro ‘rcu_dereference_check’
       #define rcu_dereference(p) rcu_dereference_check(p, 0)
                                  ^
      /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:654:18: note: in expansion of macro ‘rcu_dereference’
         ring = key_get(rcu_dereference(key_tgcred(tsk)
                        ^
      /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:654:34: note: in expansion of macro ‘key_tgcred’
         ring = key_get(rcu_dereference(key_tgcred(tsk)
                                        ^
      /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:121:37: error: ‘const struct cred’ has no member named ‘tgcred’
       #define key_tgcred(tsk) ((tsk)->cred->tgcred)
                                           ^
      include/linux/rcupdate.h:521:38: note: in definition of macro ‘__rcu_dereference_check’
         typeof(*p) *_________p1 = (typeof(*p)*__force )ACCESS_ONCE(p); \
                                            ^
      include/linux/rcupdate.h:709:28: note: in expansion of macro ‘rcu_dereference_check’
       #define rcu_dereference(p) rcu_dereference_check(p, 0)
                                  ^
      /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:654:18: note: in expansion of macro ‘rcu_dereference’
         ring = key_get(rcu_dereference(key_tgcred(tsk)
                        ^
      /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:654:34: note: in expansion of macro ‘key_tgcred’
         ring = key_get(rcu_dereference(key_tgcred(tsk)
                                        ^
      In file included from include/linux/init.h:4:0,
                       from /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:42:
      /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:121:37: error: ‘const struct cred’ has no member named ‘tgcred’
       #define key_tgcred(tsk) ((tsk)->cred->tgcred)
                                           ^
      include/linux/compiler.h:365:43: note: in definition of macro ‘ACCESS_ONCE’
       #define ACCESS_ONCE(x) (*(volatile typeof(x) *)&(x))
                                                 ^
      include/linux/rcupdate.h:613:2: note: in expansion of macro ‘__rcu_dereference_check’
        __rcu_dereference_check((p), rcu_read_lock_held() || (c), __rcu)
        ^
      include/linux/rcupdate.h:709:28: note: in expansion of macro ‘rcu_dereference_check’
       #define rcu_dereference(p) rcu_dereference_check(p, 0)
                                  ^
      /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:654:18: note: in expansion of macro ‘rcu_dereference’
         ring = key_get(rcu_dereference(key_tgcred(tsk)
                        ^
      /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:654:34: note: in expansion of macro ‘key_tgcred’
         ring = key_get(rcu_dereference(key_tgcred(tsk)
                                        ^
      /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:121:37: error: ‘const struct cred’ has no member named ‘tgcred’
       #define key_tgcred(tsk) ((tsk)->cred->tgcred)
                                           ^
      include/linux/compiler.h:365:50: note: in definition of macro ‘ACCESS_ONCE’
       #define ACCESS_ONCE(x) (*(volatile typeof(x) *)&(x))
                                                        ^
      include/linux/rcupdate.h:613:2: note: in expansion of macro ‘__rcu_dereference_check’
        __rcu_dereference_check((p), rcu_read_lock_held() || (c), __rcu)
        ^
      include/linux/rcupdate.h:709:28: note: in expansion of macro ‘rcu_dereference_check’
       #define rcu_dereference(p) rcu_dereference_check(p, 0)
                                  ^
      /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:654:18: note: in expansion of macro ‘rcu_dereference’
         ring = key_get(rcu_dereference(key_tgcred(tsk)
                        ^
      /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:654:34: note: in expansion of macro ‘key_tgcred’
         ring = key_get(rcu_dereference(key_tgcred(tsk)
                                        ^
      In file included from include/linux/srcu.h:33:0,
                       from include/linux/notifier.h:15,
                       from include/linux/memory_hotplug.h:6,
                       from include/linux/mmzone.h:830,
                       from include/linux/gfp.h:4,
                       from include/linux/kmod.h:22,
                       from include/linux/module.h:13,
                       from /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:43:
      /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:121:37: error: ‘const struct cred’ has no member named ‘tgcred’
       #define key_tgcred(tsk) ((tsk)->cred->tgcred)
                                           ^
      include/linux/rcupdate.h:526:13: note: in definition of macro ‘__rcu_dereference_check’
         ((typeof(*p) __force __kernel *)(_________p1)); \
                   ^
      include/linux/rcupdate.h:709:28: note: in expansion of macro ‘rcu_dereference_check’
       #define rcu_dereference(p) rcu_dereference_check(p, 0)
                                  ^
      /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:654:18: note: in expansion of macro ‘rcu_dereference’
         ring = key_get(rcu_dereference(key_tgcred(tsk)
                        ^
      /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:654:34: note: in expansion of macro ‘key_tgcred’
         ring = key_get(rcu_dereference(key_tgcred(tsk)
                                        ^
      In file included from include/linux/init.h:4:0,
                       from /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:42:
      /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c: In function ‘gss_kt_instantiate’:
      /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:121:37: error: ‘const struct cred’ has no member named ‘tgcred’
       #define key_tgcred(tsk) ((tsk)->cred->tgcred)
                                           ^
      include/linux/compiler.h:153:42: note: in definition of macro ‘unlikely’
       # define unlikely(x) __builtin_expect(!!(x), 0)
                                                ^
      /home/bogl/lustre-release/libcfs/include/libcfs/libcfs_private.h:99:23: note: in expansion of macro ‘LASSERTF’
       #define LASSERT(cond) LASSERTF(cond, "\n")
                             ^
      /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:1244:2: note: in expansion of macro ‘LASSERT’
        LASSERT(key_tgcred(current)->session_keyring);
        ^
      /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:1244:10: note: in expansion of macro ‘key_tgcred’
        LASSERT(key_tgcred(current)->session_keyring);
                ^
      /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:121:37: error: ‘const struct cred’ has no member named ‘tgcred’
       #define key_tgcred(tsk) ((tsk)->cred->tgcred)
                                           ^
      /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:1247:16: note: in expansion of macro ‘key_tgcred’
        rc = key_link(key_tgcred(current)->session_keyring, key);
                      ^
      /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:121:37: error: ‘const struct cred’ has no member named ‘tgcred’
       #define key_tgcred(tsk) ((tsk)->cred->tgcred)
                                           ^
      /home/bogl/lustre-release/libcfs/include/libcfs/libcfs_debug.h:231:55: note: in expansion of macro ‘key_tgcred’
                       libcfs_debug_msg(&msgdata, format, ## __VA_ARGS__);     \
                                                             ^
      /home/bogl/lustre-release/libcfs/include/libcfs/libcfs_debug.h:241:9: note: in expansion of macro ‘__CDEBUG’
               __CDEBUG(&cdls, mask, format, ## __VA_ARGS__);\
               ^
      /home/bogl/lustre-release/libcfs/include/libcfs/libcfs_debug.h:271:37: note: in expansion of macro ‘CDEBUG_LIMIT’
       #define CERROR(format, ...)         CDEBUG_LIMIT(D_ERROR, format, ## __VA_ARGS__)
                                           ^
      /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:1250:3: note: in expansion of macro ‘CERROR’
         CERROR("failed to link key %08x to keyring %08x: %d\n",
         ^
      /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c: At top level:
      /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:1409:9: error: initialization from incompatible pointer type [-Werror]
               .instantiate    = gss_kt_instantiate,
               ^
      /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:1409:9: error: (near initialization for ‘gss_key_type.instantiate’) [-Werror]
      /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:1410:9: error: initialization from incompatible pointer type [-Werror]
               .update         = gss_kt_update,
               ^
      /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:1410:9: error: (near initialization for ‘gss_key_type.update’) [-Werror]
      cc1: all warnings being treated as errors
      scripts/Makefile.build:324: recipe for target '/home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.o' failed
      make[7]: *** [/home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.o] Error 1
      scripts/Makefile.build:485: recipe for target '/home/bogl/lustre-release/lustre/ptlrpc/gss' failed
      make[6]: *** [/home/bogl/lustre-release/lustre/ptlrpc/gss] Error 2
      scripts/Makefile.build:485: recipe for target '/home/bogl/lustre-release/lustre/ptlrpc' failed
      make[5]: *** [/home/bogl/lustre-release/lustre/ptlrpc] Error 2
      scripts/Makefile.build:485: recipe for target '/home/bogl/lustre-release/lustre' failed
      make[4]: *** [/home/bogl/lustre-release/lustre] Error 2
      Makefile:1287: recipe for target '_module_/home/bogl/lustre-release' failed
      make[3]: *** [_module_/home/bogl/lustre-release] Error 2
      make[3]: Leaving directory '/home/bogl/linux-3.12.39-47'
      autoMakefile:1018: recipe for target 'modules' failed
      make[2]: *** [modules] Error 2
      make[2]: Leaving directory '/home/bogl/lustre-release'
      autoMakefile:565: recipe for target 'all-recursive' failed
      make[1]: *** [all-recursive] Error 1
      make[1]: Leaving directory '/home/bogl/lustre-release'
      autoMakefile:466: recipe for target 'all' failed
      make: *** [all] Error 2
      

      we need autoconf and code changes to adapt to different gss data structures and APIs seen in sles12.

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                bogl Bob Glossman (Inactive)
                Reporter:
                bogl Bob Glossman (Inactive)
              • Votes:
                0 Vote for this issue
                Watchers:
                10 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: