All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC PATCH 0/2] race of lockd/nfsd inetaddr notifiers with pointers change
@ 2017-10-17 16:40 Vasily Averin
  2017-10-19 15:42 ` Vasily Averin
  0 siblings, 1 reply; 8+ messages in thread
From: Vasily Averin @ 2017-10-17 16:40 UTC (permalink / raw)
  To: linux-nfs, linux-kernel; +Cc: J. Bruce Fields, Jeff Layton

lockd and nfsd inet[6]addr notifiers use pointer that can be changed during execution.

lockd_inet[6]addr_event use nlmsvc_rqst without taken nlmsvc_mutex,
nfsd notifier have similar trouble.

We got few crashes from OpenVz customers on RHEL6-based kernel,
and I have reproduced the problem locally on this kernel.

I was unable to reproduce the problem on new kernels,
however seems they are affected.

We cannot add mutexes into notifiers because inet6addr notifiers should be atomic.

To fix the problem I use atomic counter and waitqueue:
counter allows notifier to access the pointer,
waitqueue allows to delay stop of service until notifier is in use.

Patches was not tested because I was unable to reproduce the problem on new kernels. 

Please review it carefully and let me know if this can be fixed in a better way.

Vasily Averin (2):
  race of lockd inetaddr notifiers with nlmsvc_rqst change
  race of nfsd inetaddr notifiers with nn->nfsd_serv change

 fs/lockd/svc.c   | 16 ++++++++++++++--
 fs/nfsd/netns.h  |  3 +++
 fs/nfsd/nfsctl.c |  3 +++
 fs/nfsd/nfssvc.c | 14 +++++++++++---
 4 files changed, 31 insertions(+), 5 deletions(-)

-- 
2.7.4


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2017-11-10 21:57 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-10-17 16:40 [RFC PATCH 0/2] race of lockd/nfsd inetaddr notifiers with pointers change Vasily Averin
2017-10-19 15:42 ` Vasily Averin
2017-10-30 14:55   ` Vasily Averin
2017-10-31 17:29     ` Scott Mayhew
2017-11-10  7:19       ` [PATCH 0/2] race of lockd/nfsd inetaddr notifiers vs " Vasily Averin
2017-11-10 21:57         ` J. Bruce Fields
2017-11-10  7:19       ` [PATCH 1/2] race of lockd inetaddr notifiers vs nlmsvc_rqst change Vasily Averin
2017-11-10  7:19       ` [PATCH 2/2] race of nfsd inetaddr notifiers vs nn->nfsd_serv change Vasily Averin

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.