From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753527AbdECORu (ORCPT ); Wed, 3 May 2017 10:17:50 -0400 Received: from mail-wm0-f67.google.com ([74.125.82.67]:36353 "EHLO mail-wm0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751262AbdECORm (ORCPT ); Wed, 3 May 2017 10:17:42 -0400 From: Nicolai Stange To: Greg Kroah-Hartman Cc: Johannes Berg , "Paul E.McKenney" , linux-kernel@vger.kernel.org, Nicolai Stange Subject: [RFC PATCH v2 0/9] debugfs: per-file removal protection Date: Wed, 3 May 2017 16:17:17 +0200 Message-Id: <20170503141726.13992-1-nicstange@gmail.com> X-Mailer: git-send-email 2.12.2 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hello Greg, this is the second attempt to implement debugfs file removal protection at file granularity. The first one can be found at [1]. Note that I left out the IB/hfi1 people from the get_maintainer list and thus, sent this in RFC mode only because the following still needs to get sorted out: 1. It's still not clear whether something like [9/9] ("debugfs: free debugfs_fsdata instances") is actually wanted. Your advice welcome! 2. The kernel test robot complained about [2/9] ("debugfs: defer debugfs_fsdata allocation to first usage") in v1. Despite Xiaolong's support, I wasn't able to reproduce this, but I hope that the changes mentioned below resolve it now. We'll see. Thanks, Nicolai [1] http://lkml.kernel.org/r/20170416095137.2784-1-nicstange@gmail.com Changes to v1: [2/9] ("debugfs: implement per-file removal protection") - In an attempt to resolve the issue reported by the kernel test robot for v1, restrict the "extended removal logic" to regular files in __debugfs_remove(). [8/9] ("debugfs: defer debugfs_fsdata allocation to first usage") - Following review from Johannes Berg, replace the WARN_ON in debugfs_real_fops() by a WARN + 'return NULL'. The return NULL is expected to crash current soon and serves as an alternative for a BUG_ON here. - Mention the change in debugfs_real_fops() in the commit message. [9/9] ("debugfs: free debugfs_fsdata instances") - Following advice from Paul E. McKenney, make debugfs_file_get() release the RCU read section inbetween retry loop iterations. - Fix a race in debugfs_file_get()'s path handling a concurrent debugfs_file_put(): the former must not "help out resetting ->d_fsdata" because this can wipe out another debugfs_file_get()'s achievements. Nicolai Stange (9): debugfs: add support for more elaborate ->d_fsdata debugfs: implement per-file removal protection debugfs: debugfs_real_fops(): drop __must_hold sparse annotation debugfs: convert to debugfs_file_get() and -put() IB/hfi1: convert to debugfs_file_get() and -put() debugfs: purge obsolete SRCU based removal protection debugfs: call debugfs_real_fops() only after debugfs_file_get() debugfs: defer debugfs_fsdata allocation to first usage debugfs: free debugfs_fsdata instances drivers/infiniband/hw/hfi1/debugfs.c | 20 +-- fs/debugfs/file.c | 278 ++++++++++++++++++++++++----------- fs/debugfs/inode.c | 60 ++++++-- fs/debugfs/internal.h | 15 ++ include/linux/debugfs.h | 33 +---- lib/Kconfig.debug | 1 - 6 files changed, 266 insertions(+), 141 deletions(-) -- 2.12.2