From: Greg Kroah-Hartman Date: Sun, 25 Jan 2015 17:29:13 +0000 (-0800) Subject: 3.10-stable patches X-Git-Tag: v3.10.66~16 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9fbe922a20f6dc50916c18ced40ef0ae1e347f6e;p=thirdparty%2Fkernel%2Fstable-queue.git 3.10-stable patches added patches: lockd-fix-a-race-when-initialising-nlmsvc_timeout.patch --- diff --git a/queue-3.10/lockd-fix-a-race-when-initialising-nlmsvc_timeout.patch b/queue-3.10/lockd-fix-a-race-when-initialising-nlmsvc_timeout.patch new file mode 100644 index 00000000000..7e5649ebd59 --- /dev/null +++ b/queue-3.10/lockd-fix-a-race-when-initialising-nlmsvc_timeout.patch @@ -0,0 +1,51 @@ +From 06bed7d18c2c07b3e3eeadf4bd357f6e806618cc Mon Sep 17 00:00:00 2001 +From: Trond Myklebust +Date: Fri, 2 Jan 2015 15:05:25 -0500 +Subject: LOCKD: Fix a race when initialising nlmsvc_timeout + +From: Trond Myklebust + +commit 06bed7d18c2c07b3e3eeadf4bd357f6e806618cc upstream. + +This commit fixes a race whereby nlmclnt_init() first starts the lockd +daemon, and then calls nlm_bind_host() with the expectation that +nlmsvc_timeout has already been initialised. Unfortunately, there is no +no synchronisation between lockd() and lockd_up() to guarantee that this +is the case. + +Fix is to move the initialisation of nlmsvc_timeout into lockd_create_svc + +Fixes: 9a1b6bf818e74 ("LOCKD: Don't call utsname()->nodename...") +Cc: Bruce Fields +Cc: stable@vger.kernel.org # 3.10.x +Signed-off-by: Trond Myklebust +Signed-off-by: Greg Kroah-Hartman + +--- + fs/lockd/svc.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +--- a/fs/lockd/svc.c ++++ b/fs/lockd/svc.c +@@ -137,10 +137,6 @@ lockd(void *vrqstp) + + dprintk("NFS locking service started (ver " LOCKD_VERSION ").\n"); + +- if (!nlm_timeout) +- nlm_timeout = LOCKD_DFLT_TIMEO; +- nlmsvc_timeout = nlm_timeout * HZ; +- + /* + * The main request loop. We don't terminate until the last + * NFS mount or NFS daemon has gone away. +@@ -346,6 +342,10 @@ static struct svc_serv *lockd_create_svc + printk(KERN_WARNING + "lockd_up: no pid, %d users??\n", nlmsvc_users); + ++ if (!nlm_timeout) ++ nlm_timeout = LOCKD_DFLT_TIMEO; ++ nlmsvc_timeout = nlm_timeout * HZ; ++ + serv = svc_create(&nlmsvc_program, LOCKD_BUFSIZE, NULL); + if (!serv) { + printk(KERN_WARNING "lockd_up: create service failed\n"); diff --git a/queue-3.10/series b/queue-3.10/series index 4904c17a3d0..fe51b8eb65f 100644 --- a/queue-3.10/series +++ b/queue-3.10/series @@ -42,3 +42,4 @@ arm-shmobile-sh73a0-legacy-set-.control_parent-for-all-irqpin-instances.patch decompress_bunzip2-off-by-one-in-get_next_block.patch um-skip-futex_atomic_cmpxchg_inatomic-test.patch x86-um-actually-mark-system-call-tables-readonly.patch +lockd-fix-a-race-when-initialising-nlmsvc_timeout.patch