• Luis Chamberlain's avatar
    ocfs2: simplify subdirectory registration with register_sysctl() · c42ff46f
    Luis Chamberlain authored
    There is no need to user boiler plate code to specify a set of base
    directories we're going to stuff sysctls under.  Simplify this by using
    register_sysctl() and specifying the directory path directly.
    
    // pycocci sysctl-subdir-register-sysctl-simplify.cocci PATH
    
    @c1@
    expression E1;
    identifier subdir, sysctls;
    @@
    
    static struct ctl_table subdir[] = {
    	{
    		.procname = E1,
    		.maxlen = 0,
    		.mode = 0555,
    		.child = sysctls,
    	},
    	{ }
    };
    
    @c2@
    identifier c1.subdir;
    
    expression E2;
    identifier base;
    @@
    
    static struct ctl_table base[] = {
    	{
    		.procname = E2,
    		.maxlen = 0,
    		.mode = 0555,
    		.child = subdir,
    	},
    	{ }
    };
    
    @c3@
    identifier c2.base;
    identifier header;
    @@
    
    header = register_sysctl_table(base);
    
    @r1 depends on c1 && c2 && c3@
    expression c1.E1;
    identifier c1.subdir, c1.sysctls;
    @@
    
    -static struct ctl_table subdir[] = {
    -	{
    -		.procname = E1,
    -		.maxlen = 0,
    -		.mode = 0555,
    -		.child = sysctls,
    -	},
    -	{ }
    -};
    
    @r2 depends on c1 && c2 && c3@
    identifier c1.subdir;
    
    expression c2.E2;
    identifier c2.base;
    @@
    -static struct ctl_table base[] = {
    -	{
    -		.procname = E2,
    -		.maxlen = 0,
    -		.mode = 0555,
    -		.child = subdir,
    -	},
    -	{ }
    -};
    
    @initialize:python@
    @@
    
    def make_my_fresh_expression(s1, s2):
      return '"' + s1.strip('"') + "/" + s2.strip('"') + '"'
    
    @r3 depends on c1 && c2 && c3@
    expression c1.E1;
    identifier c1.sysctls;
    expression c2.E2;
    identifier c2.base;
    identifier c3.header;
    fresh identifier E3 = script:python(E2, E1) { make_my_fresh_expression(E2, E1) };
    @@
    
    header =
    -register_sysctl_table(base);
    +register_sysctl(E3, sysctls);
    
    Generated-by: Coccinelle SmPL
    Link: https://lkml.kernel.org/r/20211123202422.819032-5-mcgrof@kernel.orgSigned-off-by: default avatarLuis Chamberlain <mcgrof@kernel.org>
    Reviewed-by: default avatarJan Kara <jack@suse.cz>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: Amir Goldstein <amir73il@gmail.com>
    Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Cc: Antti Palosaari <crope@iki.fi>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Benjamin LaHaise <bcrl@kvack.org>
    Cc: Clemens Ladisch <clemens@ladisch.de>
    Cc: David Airlie <airlied@linux.ie>
    Cc: "Eric W. Biederman" <ebiederm@xmission.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Iurii Zaikin <yzaikin@google.com>
    Cc: Jani Nikula <jani.nikula@linux.intel.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Cc: Joseph Qi <joseph.qi@linux.alibaba.com>
    Cc: Julia Lawall <julia.lawall@inria.fr>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Lukas Middendorf <kernel@tuxforce.de>
    Cc: Mark Fasheh <mark@fasheh.com>
    Cc: Paul Turner <pjt@google.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Petr Mladek <pmladek@suse.com>
    Cc: Phillip Potter <phil@philpotter.co.uk>
    Cc: Qing Wang <wangqing@vivo.com>
    Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Cc: Sebastian Reichel <sre@kernel.org>
    Cc: Sergey Senozhatsky <senozhatsky@chromium.org>
    Cc: Stephen Kitt <steve@sk2.org>
    Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Cc: Xiaoming Ni <nixiaoming@huawei.com>
    Cc: Douglas Gilbert <dgilbert@interlog.com>
    Cc: James E.J. Bottomley <jejb@linux.ibm.com>
    Cc: Jani Nikula <jani.nikula@intel.com>
    Cc: John Ogness <john.ogness@linutronix.de>
    Cc: Martin K. Petersen <martin.petersen@oracle.com>
    Cc: "Rafael J. Wysocki" <rafael@kernel.org>
    Cc: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Cc: Suren Baghdasaryan <surenb@google.com>
    Cc: "Theodore Ts'o" <tytso@mit.edu>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    c42ff46f
stackglue.c 16.5 KB