From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1761940Ab3DCDLA (ORCPT ); Tue, 2 Apr 2013 23:11:00 -0400 Received: from out1-smtp.messagingengine.com ([66.111.4.25]:45337 "EHLO out1-smtp.messagingengine.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1761424Ab3DCDK6 (ORCPT ); Tue, 2 Apr 2013 23:10:58 -0400 X-Sasl-enc: L3dMuczW6YKNKbnQao3kH+K4+ueol5orbxOINqzlv5ze 1364958657 Subject: [PATCH] autofs - remove autofs dentry mount check To: Linus Torvalds From: Ian Kent Cc: linux-fsdevel , autofs mailing list , Kernel Mailing List , stable@vger.kernel.org, David Jeffery Date: Wed, 03 Apr 2013 11:10:53 +0800 Message-ID: <20130403031052.26816.9163.stgit@perseus.fritz.box> User-Agent: StGit/0.16 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: David Jeffery When checking if an autofs mount point is busy it isn't sufficient to only check if it's a mount point. For example, if the mount of an offset mountpoint in a tree is denied for this host by its export and the dentry becomes a process working directory the check incorrectly returns the mount as not in use at expire. This can happen since the default when mounting within a tree is nostrict, which means ingnore mount fails on mounts within the tree and continue. The nostrict option is meant to allow mounting in this case. Signed-off-by: David Jeffery Signed-off-by: Ian Kent Cc: stable@vger.kernel.org --- fs/autofs4/expire.c | 9 --------- 1 file changed, 9 deletions(-) diff --git a/fs/autofs4/expire.c b/fs/autofs4/expire.c index 01443ce..13ddec9 100644 --- a/fs/autofs4/expire.c +++ b/fs/autofs4/expire.c @@ -61,15 +61,6 @@ static int autofs4_mount_busy(struct vfsmount *mnt, struct dentry *dentry) /* This is an autofs submount, we can't expire it */ if (autofs_type_indirect(sbi->type)) goto done; - - /* - * Otherwise it's an offset mount and we need to check - * if we can umount its mount, if there is one. - */ - if (!d_mountpoint(path.dentry)) { - status = 0; - goto done; - } } /* Update the expiry counter if fs is busy */