From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756138AbbEESGV (ORCPT ); Tue, 5 May 2015 14:06:21 -0400 Received: from mailrelay109.isp.belgacom.be ([195.238.20.136]:30602 "EHLO mailrelay109.isp.belgacom.be" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752493AbbEESGT (ORCPT ); Tue, 5 May 2015 14:06:19 -0400 X-Belgacom-Dynamic: yes X-Cloudmark-SP-Filtered: true X-Cloudmark-SP-Result: v=1.1 cv=hkFBDakPHWYIOok4y3pcivnmCJQbEK2MeX2RAJ8hs1E= c=1 sm=2 a=Z4Rwk6OoAAAA:8 a=drOt6m5kAAAA:8 a=Mcz0kZ35bc32j7w89CkA:9 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A2DHEAClBUlV/5ETQFdcgwyBL7QQAQEBAQEFAYECmEmBPU0BAQEBAQGBC0EFhAgvI4EaN4gwAcR1LIYXiicdhBcFkXeKfJYvI2BmAXGBPjwxgkUBAQE From: Fabian Frederick To: linux-kernel@vger.kernel.org Cc: Fabian Frederick , Andrew Morton , Alexander Viro , Jan Kara Subject: [PATCH 1/2 linux-next] fs/affs/inode.c: mark new inode before hashtable insertion Date: Tue, 5 May 2015 20:06:09 +0200 Message-Id: <1430849170-1171-1-git-send-email-fabf@skynet.be> X-Mailer: git-send-email 1.9.1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org AFFS didn't mark new inode to I_NEW state like other FS using insert_inode_locked() during creation. This patch also unlocks inode when setup is complete or operation failed. Problem appeared when trying to add tmpfile support. Cc: Andrew Morton Cc: Alexander Viro Cc: Jan Kara Suggested-by: Jan Kara Signed-off-by: Fabian Frederick --- fs/affs/inode.c | 2 ++ fs/affs/namei.c | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/fs/affs/inode.c b/fs/affs/inode.c index 1734950..859a9cb 100644 --- a/fs/affs/inode.c +++ b/fs/affs/inode.c @@ -323,6 +323,8 @@ affs_new_inode(struct inode *dir) AFFS_I(inode)->i_pa_cnt = 0; AFFS_I(inode)->i_extcnt = 1; AFFS_I(inode)->i_ext_last = ~1; + if (insert_inode_locked(inode) < 0) + goto err_inode; insert_inode_hash(inode); diff --git a/fs/affs/namei.c b/fs/affs/namei.c index 181e05b..b183540 100644 --- a/fs/affs/namei.c +++ b/fs/affs/namei.c @@ -281,9 +281,11 @@ affs_create(struct inode *dir, struct dentry *dentry, umode_t mode, bool excl) error = affs_add_entry(dir, inode, dentry, ST_FILE); if (error) { clear_nlink(inode); + unlock_new_inode(inode); iput(inode); return error; } + unlock_new_inode(inode); return 0; } @@ -310,9 +312,11 @@ affs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode) if (error) { clear_nlink(inode); mark_inode_dirty(inode); + unlock_new_inode(inode); iput(inode); return error; } + unlock_new_inode(inode); return 0; } @@ -391,11 +395,13 @@ affs_symlink(struct inode *dir, struct dentry *dentry, const char *symname) if (error) goto err; + unlock_new_inode(inode); return 0; err: clear_nlink(inode); mark_inode_dirty(inode); + unlock_new_inode(inode); iput(inode); return error; } -- 1.9.1