From: Marc Dionne Date: Thu, 6 Sep 2012 00:25:55 +0000 (-0400) Subject: Linux: drop GLOCK before calling dput X-Git-Tag: upstream/1.8.0_pre1^2~2040 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=0dac4de8;p=packages%2Fo%2Fopenafs.git Linux: drop GLOCK before calling dput Holding the GLOCK when calling dput can result in a deadlock when the kernel calls back into afs_dentry_iput. It should be safe to drop the lock here. Change-Id: I8966aea7336b39b4c3ec265a53d820fc6135eeaf Reviewed-on: http://gerrit.openafs.org/8046 Reviewed-by: Simon Wilkinson Reviewed-by: Derrick Brashear Tested-by: Derrick Brashear --- diff --git a/src/afs/afs_pioctl.c b/src/afs/afs_pioctl.c index aab52ff59..0836b873d 100644 --- a/src/afs/afs_pioctl.c +++ b/src/afs/afs_pioctl.c @@ -1239,7 +1239,13 @@ afs_syscall_pioctl(char *path, unsigned int com, caddr_t cmarg, int follow) #endif /* AFS_NEED_CLIENTCONTEXT */ if (vp) { #ifdef AFS_LINUX22_ENV + /* + * Holding the global lock when calling dput can cause a deadlock + * when the kernel calls back into afs_dentry_iput + */ + AFS_GUNLOCK(); dput(dp); + AFS_GLOCK(); #else #if defined(AFS_FBSD80_ENV) if (VOP_ISLOCKED(vp))