cifs.upcall: bump SPNEGO msg version number and don't reject old versions
authorJeff Layton <jlayton@redhat.com>
Fri, 22 Aug 2008 17:29:16 +0000 (13:29 -0400)
committerJeff Layton <jlayton@redhat.com>
Fri, 22 Aug 2008 17:29:16 +0000 (13:29 -0400)
When we added the ability for the kernel to send sec=mskrb5 to the
upcall, we subtly broke old cifs.upcall versions that don't understand
it. Bump the spnego message version to 2 to make this clear. Also,
change cifs.upcall to not reject requests with a version that's lower
than the current one, and to send the reply with the same version that
the request sent. The idea is to try and keep cifs.upcall backward
compatible with old kernels.

Signed-off-by: Jeff Layton <jlayton@redhat.com>
source/client/cifs.upcall.c
source/client/cifs_spnego.h

index cf5f1c3fb0363e999cfcc04e839b0e2035bafa31..7cb51660d7ea0a5f3978c17a789626697d2ab8bc 100644 (file)
@@ -284,7 +284,7 @@ int main(const int argc, char *const argv[])
        }
        SAFE_FREE(buf);
 
-       if (kernel_upcall_version != CIFS_SPNEGO_UPCALL_VERSION) {
+       if (kernel_upcall_version > CIFS_SPNEGO_UPCALL_VERSION) {
                syslog(LOG_WARNING,
                       "incompatible kernel upcall version: 0x%x",
                       kernel_upcall_version);
@@ -353,7 +353,7 @@ int main(const int argc, char *const argv[])
                rc = 1;
                goto out;
        }
-       keydata->version = CIFS_SPNEGO_UPCALL_VERSION;
+       keydata->version = kernel_upcall_version;
        keydata->flags = 0;
        keydata->sesskey_len = sess_key.length;
        keydata->secblob_len = secblob.length;
index 13909dd505748f6a0c25110a7ef16d70ed6fe699..f8753a7d59dd1f1e9668fa8564eeb39bef429af7 100644 (file)
@@ -23,7 +23,7 @@
 #ifndef _CIFS_SPNEGO_H
 #define _CIFS_SPNEGO_H
 
-#define CIFS_SPNEGO_UPCALL_VERSION 1
+#define CIFS_SPNEGO_UPCALL_VERSION 2
 
 /*
  * The version field should always be set to CIFS_SPNEGO_UPCALL_VERSION.