From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755459AbcAHP3z (ORCPT ); Fri, 8 Jan 2016 10:29:55 -0500 Received: from mga03.intel.com ([134.134.136.65]:44866 "EHLO mga03.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751025AbcAHP3x (ORCPT ); Fri, 8 Jan 2016 10:29:53 -0500 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.20,539,1444719600"; d="scan'208";a="856469625" From: Rui Wang To: miklos@szeredi.hu Cc: viro@zeniv.linux.org.uk, linux-unionfs@vger.kernel.org, linux-kernel@vger.kernel.org, rui.y.wang@intel.com Subject: [PATCH] ovl: fix getcwd() failure after unsuccessful rmdir Date: Fri, 8 Jan 2016 23:09:59 +0800 Message-Id: <1452265799-4549-1-git-send-email-rui.y.wang@intel.com> X-Mailer: git-send-email 1.7.5.4 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org ovl_remove_upper() should do d_drop() only after it successfully removes the dir, otherwise a subsequent getcwd() system call will fail, breaking userspace programs. This is to fix: https://bugzilla.kernel.org/show_bug.cgi?id=110491 Signed-off-by: Rui Wang --- fs/overlayfs/dir.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/fs/overlayfs/dir.c b/fs/overlayfs/dir.c index 692ceda..36d6a5b 100644 --- a/fs/overlayfs/dir.c +++ b/fs/overlayfs/dir.c @@ -618,7 +618,8 @@ static int ovl_remove_upper(struct dentry *dentry, bool is_dir) * sole user of this dentry. Too tricky... Just unhash for * now. */ - d_drop(dentry); + if (!err) + d_drop(dentry); mutex_unlock(&dir->i_mutex); return err; -- 1.7.5.4