Details
-
Bug
-
Resolution: Fixed
-
Major
-
Lustre 2.8.0
-
sles12
-
3
-
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.