Commit 09fe7ba7 authored by Jeff Layton's avatar Jeff Layton Committed by Steve French
Browse files

[CIFS] implement upcalls for SPNEGO blob via keyctl API



Add routines to handle upcalls to userspace via keyctl for the purpose
of getting a SPNEGO blob for a particular uid and server combination.

Clean up the Makefile a bit and set it up to only compile cifs_spnego
if CONFIG_CIFS_UPCALL is set. Also change CONFIG_CIFS_UPCALL to depend
on CONFIG_KEYS rather than CONFIG_CONNECTOR.

cifs_spnego.h defines the communications between kernel and userspace
and is intended to be shared with userspace programs.

Signed-off-by: default avatarJeff Layton <jlayton@redhat.com>
Signed-off-by: default avatarSteve French <sfrench@us.ibm.com>
parent 745542e2
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -2007,7 +2007,7 @@ config CIFS_EXPERIMENTAL
config CIFS_UPCALL
	  bool "Kerberos/SPNEGO advanced session setup (EXPERIMENTAL)"
	  depends on CIFS_EXPERIMENTAL
	  depends on CONNECTOR
	  depends on KEYS
	  help
	    Enables an upcall mechanism for CIFS which will be used to contact
	    userspace helper utilities to provide SPNEGO packaged Kerberos
+6 −1
Original line number Diff line number Diff line
@@ -3,4 +3,9 @@
#
obj-$(CONFIG_CIFS) += cifs.o

cifs-objs := cifsfs.o cifssmb.o cifs_debug.o connect.o dir.o file.o inode.o link.o misc.o netmisc.o smbdes.o smbencrypt.o transport.o asn1.o md4.o md5.o cifs_unicode.o nterr.o xattr.o cifsencrypt.o fcntl.o readdir.o ioctl.o sess.o export.o cifsacl.o
cifs-y := cifsfs.o cifssmb.o cifs_debug.o connect.o dir.o file.o inode.o \
	  link.o misc.o netmisc.o smbdes.o smbencrypt.o transport.o asn1.o \
	  md4.o md5.o cifs_unicode.o nterr.o xattr.o cifsencrypt.o fcntl.o \
	  readdir.o ioctl.o sess.o export.o cifsacl.o

cifs-$(CONFIG_CIFS_UPCALL) += cifs_spnego.o
+2 −0
Original line number Diff line number Diff line
@@ -76,6 +76,8 @@ extern void header_assemble(struct smb_hdr *, char /* command */ ,
extern int small_smb_init_no_tc(const int smb_cmd, const int wct,
				struct cifsSesInfo *ses,
				void **request_buf);
extern struct key *cifs_get_spnego_key(struct cifsSesInfo *sesInfo,
					const char *hostname);
extern int CIFS_SessSetup(unsigned int xid, struct cifsSesInfo *ses,
			     const int stage,
			     const struct nls_table *nls_cp);