lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <202310121404.FMC1T6FF-lkp@intel.com>
Date:   Thu, 12 Oct 2023 15:08:59 +0800
From:   kernel test robot <lkp@...el.com>
To:     Geert Uytterhoeven <geert+renesas@...der.be>,
        Chuck Lever <chuck.lever@...cle.com>,
        Jeff Layton <jlayton@...nel.org>, Neil Brown <neilb@...e.de>,
        Olga Kornievskaia <kolga@...app.com>,
        Dai Ngo <Dai.Ngo@...cle.com>, Tom Talpey <tom@...pey.com>,
        Trond Myklebust <trond.myklebust@...merspace.com>,
        Anna Schumaker <anna@...nel.org>
Cc:     oe-kbuild-all@...ts.linux.dev, linux-nfs@...r.kernel.org,
        linux-kernel@...r.kernel.org,
        Geert Uytterhoeven <geert+renesas@...der.be>
Subject: Re: [PATCH] sunrpc: Use no_printk() in dfprintk*() dummies

Hi Geert,

kernel test robot noticed the following build errors:

[auto build test ERROR on trondmy-nfs/linux-next]
[also build test ERROR on linus/master v6.6-rc5 next-20231011]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Geert-Uytterhoeven/sunrpc-Use-no_printk-in-dfprintk-dummies/20231011-181013
base:   git://git.linux-nfs.org/projects/trondmy/linux-nfs.git linux-next
patch link:    https://lore.kernel.org/r/707e5e6dd0db9a663cf443564d1f8ee1c10a0086.1697018818.git.geert%2Brenesas%40glider.be
patch subject: [PATCH] sunrpc: Use no_printk() in dfprintk*() dummies
config: alpha-defconfig (https://download.01.org/0day-ci/archive/20231012/202310121404.FMC1T6FF-lkp@intel.com/config)
compiler: alpha-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231012/202310121404.FMC1T6FF-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@...el.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202310121404.FMC1T6FF-lkp@intel.com/

All error/warnings (new ones prefixed by >>):

   In file included from include/asm-generic/bug.h:22,
                    from arch/alpha/include/asm/bug.h:23,
                    from include/linux/bug.h:5,
                    from include/linux/thread_info.h:13,
                    from include/asm-generic/preempt.h:5,
                    from ./arch/alpha/include/generated/asm/preempt.h:1,
                    from include/linux/preempt.h:79,
                    from include/linux/spinlock.h:56,
                    from include/linux/mmzone.h:8,
                    from include/linux/gfp.h:7,
                    from include/linux/slab.h:16,
                    from fs/lockd/svclock.c:25:
   fs/lockd/svclock.c: In function 'nlmsvc_lookup_block':
>> fs/lockd/svclock.c:164:33: error: implicit declaration of function 'nlmdbg_cookie2a' [-Werror=implicit-function-declaration]
     164 |                                 nlmdbg_cookie2a(&block->b_call->a_args.cookie));
         |                                 ^~~~~~~~~~~~~~~
   include/linux/printk.h:427:33: note: in definition of macro 'printk_index_wrap'
     427 |                 _p_func(_fmt, ##__VA_ARGS__);                           \
         |                                 ^~~~~~~~~~~
   include/linux/printk.h:129:17: note: in expansion of macro 'printk'
     129 |                 printk(fmt, ##__VA_ARGS__);             \
         |                 ^~~~~~
   include/linux/sunrpc/debug.h:70:41: note: in expansion of macro 'no_printk'
      70 | # define dfprintk(fac, fmt, ...)        no_printk(fmt, ##__VA_ARGS__)
         |                                         ^~~~~~~~~
   include/linux/sunrpc/debug.h:25:9: note: in expansion of macro 'dfprintk'
      25 |         dfprintk(FACILITY, fmt, ##__VA_ARGS__)
         |         ^~~~~~~~
   fs/lockd/svclock.c:160:17: note: in expansion of macro 'dprintk'
     160 |                 dprintk("lockd: check f=%p pd=%d %Ld-%Ld ty=%d cookie=%s\n",
         |                 ^~~~~~~
>> fs/lockd/svclock.c:160:25: warning: format '%s' expects argument of type 'char *', but argument 7 has type 'int' [-Wformat=]
     160 |                 dprintk("lockd: check f=%p pd=%d %Ld-%Ld ty=%d cookie=%s\n",
         |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   ......
     164 |                                 nlmdbg_cookie2a(&block->b_call->a_args.cookie));
         |                                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         |                                 |
         |                                 int
   include/linux/printk.h:427:25: note: in definition of macro 'printk_index_wrap'
     427 |                 _p_func(_fmt, ##__VA_ARGS__);                           \
         |                         ^~~~
   include/linux/printk.h:129:17: note: in expansion of macro 'printk'
     129 |                 printk(fmt, ##__VA_ARGS__);             \
         |                 ^~~~~~
   include/linux/sunrpc/debug.h:70:41: note: in expansion of macro 'no_printk'
      70 | # define dfprintk(fac, fmt, ...)        no_printk(fmt, ##__VA_ARGS__)
         |                                         ^~~~~~~~~
   include/linux/sunrpc/debug.h:25:9: note: in expansion of macro 'dfprintk'
      25 |         dfprintk(FACILITY, fmt, ##__VA_ARGS__)
         |         ^~~~~~~~
   fs/lockd/svclock.c:160:17: note: in expansion of macro 'dprintk'
     160 |                 dprintk("lockd: check f=%p pd=%d %Ld-%Ld ty=%d cookie=%s\n",
         |                 ^~~~~~~
   fs/lockd/svclock.c:160:72: note: format string is defined here
     160 |                 dprintk("lockd: check f=%p pd=%d %Ld-%Ld ty=%d cookie=%s\n",
         |                                                                       ~^
         |                                                                        |
         |                                                                        char *
         |                                                                       %d
   fs/lockd/svclock.c: In function 'nlmsvc_find_block':
   fs/lockd/svclock.c:203:17: warning: format '%s' expects argument of type 'char *', but argument 2 has type 'int' [-Wformat=]
     203 |         dprintk("nlmsvc_find_block(%s): block=%p\n", nlmdbg_cookie2a(cookie), block);
         |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~~~~~~~~~~~~~~~~
         |                                                      |
         |                                                      int
   include/linux/printk.h:427:25: note: in definition of macro 'printk_index_wrap'
     427 |                 _p_func(_fmt, ##__VA_ARGS__);                           \
         |                         ^~~~
   include/linux/printk.h:129:17: note: in expansion of macro 'printk'
     129 |                 printk(fmt, ##__VA_ARGS__);             \
         |                 ^~~~~~
   include/linux/sunrpc/debug.h:70:41: note: in expansion of macro 'no_printk'
      70 | # define dfprintk(fac, fmt, ...)        no_printk(fmt, ##__VA_ARGS__)
         |                                         ^~~~~~~~~
   include/linux/sunrpc/debug.h:25:9: note: in expansion of macro 'dfprintk'
      25 |         dfprintk(FACILITY, fmt, ##__VA_ARGS__)
         |         ^~~~~~~~
   fs/lockd/svclock.c:203:9: note: in expansion of macro 'dprintk'
     203 |         dprintk("nlmsvc_find_block(%s): block=%p\n", nlmdbg_cookie2a(cookie), block);
         |         ^~~~~~~
   fs/lockd/svclock.c:203:37: note: format string is defined here
     203 |         dprintk("nlmsvc_find_block(%s): block=%p\n", nlmdbg_cookie2a(cookie), block);
         |                                    ~^
         |                                     |
         |                                     char *
         |                                    %d
   fs/lockd/svclock.c: In function 'nlmsvc_lock':
   fs/lockd/svclock.c:494:33: error: 'inode' undeclared (first use in this function)
     494 |                                 inode->i_sb->s_id, inode->i_ino,
         |                                 ^~~~~
   include/linux/printk.h:427:33: note: in definition of macro 'printk_index_wrap'
     427 |                 _p_func(_fmt, ##__VA_ARGS__);                           \
         |                                 ^~~~~~~~~~~
   include/linux/printk.h:129:17: note: in expansion of macro 'printk'
     129 |                 printk(fmt, ##__VA_ARGS__);             \
         |                 ^~~~~~
   include/linux/sunrpc/debug.h:70:41: note: in expansion of macro 'no_printk'
      70 | # define dfprintk(fac, fmt, ...)        no_printk(fmt, ##__VA_ARGS__)
         |                                         ^~~~~~~~~
   include/linux/sunrpc/debug.h:25:9: note: in expansion of macro 'dfprintk'
      25 |         dfprintk(FACILITY, fmt, ##__VA_ARGS__)
         |         ^~~~~~~~
   fs/lockd/svclock.c:493:9: note: in expansion of macro 'dprintk'
     493 |         dprintk("lockd: nlmsvc_lock(%s/%ld, ty=%d, pi=%d, %Ld-%Ld, bl=%d)\n",
         |         ^~~~~~~
   fs/lockd/svclock.c:494:33: note: each undeclared identifier is reported only once for each function it appears in
     494 |                                 inode->i_sb->s_id, inode->i_ino,
         |                                 ^~~~~
   include/linux/printk.h:427:33: note: in definition of macro 'printk_index_wrap'
     427 |                 _p_func(_fmt, ##__VA_ARGS__);                           \
         |                                 ^~~~~~~~~~~
   include/linux/printk.h:129:17: note: in expansion of macro 'printk'
     129 |                 printk(fmt, ##__VA_ARGS__);             \
         |                 ^~~~~~
   include/linux/sunrpc/debug.h:70:41: note: in expansion of macro 'no_printk'
      70 | # define dfprintk(fac, fmt, ...)        no_printk(fmt, ##__VA_ARGS__)
         |                                         ^~~~~~~~~
   include/linux/sunrpc/debug.h:25:9: note: in expansion of macro 'dfprintk'
      25 |         dfprintk(FACILITY, fmt, ##__VA_ARGS__)
         |         ^~~~~~~~
   fs/lockd/svclock.c:493:9: note: in expansion of macro 'dprintk'
     493 |         dprintk("lockd: nlmsvc_lock(%s/%ld, ty=%d, pi=%d, %Ld-%Ld, bl=%d)\n",
         |         ^~~~~~~
   cc1: some warnings being treated as errors
--
   In file included from include/asm-generic/bug.h:22,
                    from arch/alpha/include/asm/bug.h:23,
                    from include/linux/bug.h:5,
                    from include/linux/thread_info.h:13,
                    from include/asm-generic/current.h:6,
                    from ./arch/alpha/include/generated/asm/current.h:1,
                    from include/linux/sched.h:12,
                    from include/linux/sunrpc/svcauth_gss.h:12,
                    from fs/nfsd/nfsfh.c:13:
   fs/nfsd/nfsfh.c: In function 'nfsd_setuser_and_check_port':
>> fs/nfsd/nfsfh.c:111:47: error: 'buf' undeclared (first use in this function)
     111 |                         svc_print_addr(rqstp, buf, sizeof(buf)));
         |                                               ^~~
   include/linux/printk.h:427:33: note: in definition of macro 'printk_index_wrap'
     427 |                 _p_func(_fmt, ##__VA_ARGS__);                           \
         |                                 ^~~~~~~~~~~
   include/linux/printk.h:129:17: note: in expansion of macro 'printk'
     129 |                 printk(fmt, ##__VA_ARGS__);             \
         |                 ^~~~~~
   include/linux/sunrpc/debug.h:70:41: note: in expansion of macro 'no_printk'
      70 | # define dfprintk(fac, fmt, ...)        no_printk(fmt, ##__VA_ARGS__)
         |                                         ^~~~~~~~~
   include/linux/sunrpc/debug.h:25:9: note: in expansion of macro 'dfprintk'
      25 |         dfprintk(FACILITY, fmt, ##__VA_ARGS__)
         |         ^~~~~~~~
   fs/nfsd/nfsfh.c:110:17: note: in expansion of macro 'dprintk'
     110 |                 dprintk("nfsd: request from insecure port %s!\n",
         |                 ^~~~~~~
   fs/nfsd/nfsfh.c:111:47: note: each undeclared identifier is reported only once for each function it appears in
     111 |                         svc_print_addr(rqstp, buf, sizeof(buf)));
         |                                               ^~~
   include/linux/printk.h:427:33: note: in definition of macro 'printk_index_wrap'
     427 |                 _p_func(_fmt, ##__VA_ARGS__);                           \
         |                                 ^~~~~~~~~~~
   include/linux/printk.h:129:17: note: in expansion of macro 'printk'
     129 |                 printk(fmt, ##__VA_ARGS__);             \
         |                 ^~~~~~
   include/linux/sunrpc/debug.h:70:41: note: in expansion of macro 'no_printk'
      70 | # define dfprintk(fac, fmt, ...)        no_printk(fmt, ##__VA_ARGS__)
         |                                         ^~~~~~~~~
   include/linux/sunrpc/debug.h:25:9: note: in expansion of macro 'dfprintk'
      25 |         dfprintk(FACILITY, fmt, ##__VA_ARGS__)
         |         ^~~~~~~~
   fs/nfsd/nfsfh.c:110:17: note: in expansion of macro 'dprintk'
     110 |                 dprintk("nfsd: request from insecure port %s!\n",
         |                 ^~~~~~~


vim +/nlmdbg_cookie2a +164 fs/lockd/svclock.c

5a0e3ad6af8660 Tejun Heo            2010-03-24  @25  #include <linux/slab.h>
^1da177e4c3f41 Linus Torvalds       2005-04-16   26  #include <linux/errno.h>
^1da177e4c3f41 Linus Torvalds       2005-04-16   27  #include <linux/kernel.h>
^1da177e4c3f41 Linus Torvalds       2005-04-16   28  #include <linux/sched.h>
^1da177e4c3f41 Linus Torvalds       2005-04-16   29  #include <linux/sunrpc/clnt.h>
5ccb0066f2d561 Stanislav Kinsbursky 2012-07-25   30  #include <linux/sunrpc/svc_xprt.h>
^1da177e4c3f41 Linus Torvalds       2005-04-16   31  #include <linux/lockd/nlm.h>
^1da177e4c3f41 Linus Torvalds       2005-04-16   32  #include <linux/lockd/lockd.h>
d751a7cd069555 Jeff Layton          2008-02-07   33  #include <linux/kthread.h>
b840be2f00c0bc J. Bruce Fields      2021-08-20   34  #include <linux/exportfs.h>
^1da177e4c3f41 Linus Torvalds       2005-04-16   35  
^1da177e4c3f41 Linus Torvalds       2005-04-16   36  #define NLMDBG_FACILITY		NLMDBG_SVCLOCK
^1da177e4c3f41 Linus Torvalds       2005-04-16   37  
^1da177e4c3f41 Linus Torvalds       2005-04-16   38  #ifdef CONFIG_LOCKD_V4
^1da177e4c3f41 Linus Torvalds       2005-04-16   39  #define nlm_deadlock	nlm4_deadlock
^1da177e4c3f41 Linus Torvalds       2005-04-16   40  #else
^1da177e4c3f41 Linus Torvalds       2005-04-16   41  #define nlm_deadlock	nlm_lck_denied
^1da177e4c3f41 Linus Torvalds       2005-04-16   42  #endif
^1da177e4c3f41 Linus Torvalds       2005-04-16   43  
6849c0cab69f5d Trond Myklebust      2006-03-20   44  static void nlmsvc_release_block(struct nlm_block *block);
^1da177e4c3f41 Linus Torvalds       2005-04-16   45  static void	nlmsvc_insert_block(struct nlm_block *block, unsigned long);
68a2d76cea4234 Olaf Kirch           2006-10-04   46  static void	nlmsvc_remove_block(struct nlm_block *block);
963d8fe5333912 Trond Myklebust      2006-01-03   47  
5e1abf8cb713a0 Trond Myklebust      2006-03-20   48  static int nlmsvc_setgrantargs(struct nlm_rqst *call, struct nlm_lock *lock);
5e1abf8cb713a0 Trond Myklebust      2006-03-20   49  static void nlmsvc_freegrantargs(struct nlm_rqst *call);
963d8fe5333912 Trond Myklebust      2006-01-03   50  static const struct rpc_call_ops nlmsvc_grant_ops;
^1da177e4c3f41 Linus Torvalds       2005-04-16   51  
^1da177e4c3f41 Linus Torvalds       2005-04-16   52  /*
^1da177e4c3f41 Linus Torvalds       2005-04-16   53   * The list of blocked locks to retry
^1da177e4c3f41 Linus Torvalds       2005-04-16   54   */
68a2d76cea4234 Olaf Kirch           2006-10-04   55  static LIST_HEAD(nlm_blocked);
f904be9cc77f36 Bryan Schumaker      2010-09-21   56  static DEFINE_SPINLOCK(nlm_blocked_lock);
^1da177e4c3f41 Linus Torvalds       2005-04-16   57  
10b89567db51e1 Jeff Layton          2014-11-17   58  #if IS_ENABLED(CONFIG_SUNRPC_DEBUG)
ffa94db6042e6f Trond Myklebust      2012-03-20   59  static const char *nlmdbg_cookie2a(const struct nlm_cookie *cookie)
ffa94db6042e6f Trond Myklebust      2012-03-20   60  {
ffa94db6042e6f Trond Myklebust      2012-03-20   61  	/*
3c5199143bc4b3 Jeff Layton          2015-01-22   62  	 * We can get away with a static buffer because this is only called
3c5199143bc4b3 Jeff Layton          2015-01-22   63  	 * from lockd, which is single-threaded.
ffa94db6042e6f Trond Myklebust      2012-03-20   64  	 */
ffa94db6042e6f Trond Myklebust      2012-03-20   65  	static char buf[2*NLM_MAXCOOKIELEN+1];
ffa94db6042e6f Trond Myklebust      2012-03-20   66  	unsigned int i, len = sizeof(buf);
ffa94db6042e6f Trond Myklebust      2012-03-20   67  	char *p = buf;
ffa94db6042e6f Trond Myklebust      2012-03-20   68  
ffa94db6042e6f Trond Myklebust      2012-03-20   69  	len--;	/* allow for trailing \0 */
ffa94db6042e6f Trond Myklebust      2012-03-20   70  	if (len < 3)
ffa94db6042e6f Trond Myklebust      2012-03-20   71  		return "???";
ffa94db6042e6f Trond Myklebust      2012-03-20   72  	for (i = 0 ; i < cookie->len ; i++) {
ffa94db6042e6f Trond Myklebust      2012-03-20   73  		if (len < 2) {
ffa94db6042e6f Trond Myklebust      2012-03-20   74  			strcpy(p-3, "...");
ffa94db6042e6f Trond Myklebust      2012-03-20   75  			break;
ffa94db6042e6f Trond Myklebust      2012-03-20   76  		}
ffa94db6042e6f Trond Myklebust      2012-03-20   77  		sprintf(p, "%02x", cookie->data[i]);
ffa94db6042e6f Trond Myklebust      2012-03-20   78  		p += 2;
ffa94db6042e6f Trond Myklebust      2012-03-20   79  		len -= 2;
ffa94db6042e6f Trond Myklebust      2012-03-20   80  	}
ffa94db6042e6f Trond Myklebust      2012-03-20   81  	*p = '\0';
ffa94db6042e6f Trond Myklebust      2012-03-20   82  
ffa94db6042e6f Trond Myklebust      2012-03-20   83  	return buf;
ffa94db6042e6f Trond Myklebust      2012-03-20   84  }
ffa94db6042e6f Trond Myklebust      2012-03-20   85  #endif
ffa94db6042e6f Trond Myklebust      2012-03-20   86  
^1da177e4c3f41 Linus Torvalds       2005-04-16   87  /*
^1da177e4c3f41 Linus Torvalds       2005-04-16   88   * Insert a blocked lock into the global list
^1da177e4c3f41 Linus Torvalds       2005-04-16   89   */
^1da177e4c3f41 Linus Torvalds       2005-04-16   90  static void
f904be9cc77f36 Bryan Schumaker      2010-09-21   91  nlmsvc_insert_block_locked(struct nlm_block *block, unsigned long when)
^1da177e4c3f41 Linus Torvalds       2005-04-16   92  {
68a2d76cea4234 Olaf Kirch           2006-10-04   93  	struct nlm_block *b;
68a2d76cea4234 Olaf Kirch           2006-10-04   94  	struct list_head *pos;
^1da177e4c3f41 Linus Torvalds       2005-04-16   95  
^1da177e4c3f41 Linus Torvalds       2005-04-16   96  	dprintk("lockd: nlmsvc_insert_block(%p, %ld)\n", block, when);
68a2d76cea4234 Olaf Kirch           2006-10-04   97  	if (list_empty(&block->b_list)) {
6849c0cab69f5d Trond Myklebust      2006-03-20   98  		kref_get(&block->b_count);
68a2d76cea4234 Olaf Kirch           2006-10-04   99  	} else {
68a2d76cea4234 Olaf Kirch           2006-10-04  100  		list_del_init(&block->b_list);
68a2d76cea4234 Olaf Kirch           2006-10-04  101  	}
68a2d76cea4234 Olaf Kirch           2006-10-04  102  
68a2d76cea4234 Olaf Kirch           2006-10-04  103  	pos = &nlm_blocked;
^1da177e4c3f41 Linus Torvalds       2005-04-16  104  	if (when != NLM_NEVER) {
^1da177e4c3f41 Linus Torvalds       2005-04-16  105  		if ((when += jiffies) == NLM_NEVER)
^1da177e4c3f41 Linus Torvalds       2005-04-16  106  			when ++;
68a2d76cea4234 Olaf Kirch           2006-10-04  107  		list_for_each(pos, &nlm_blocked) {
68a2d76cea4234 Olaf Kirch           2006-10-04  108  			b = list_entry(pos, struct nlm_block, b_list);
68a2d76cea4234 Olaf Kirch           2006-10-04  109  			if (time_after(b->b_when,when) || b->b_when == NLM_NEVER)
68a2d76cea4234 Olaf Kirch           2006-10-04  110  				break;
68a2d76cea4234 Olaf Kirch           2006-10-04  111  		}
68a2d76cea4234 Olaf Kirch           2006-10-04  112  		/* On normal exit from the loop, pos == &nlm_blocked,
68a2d76cea4234 Olaf Kirch           2006-10-04  113  		 * so we will be adding to the end of the list - good
68a2d76cea4234 Olaf Kirch           2006-10-04  114  		 */
68a2d76cea4234 Olaf Kirch           2006-10-04  115  	}
^1da177e4c3f41 Linus Torvalds       2005-04-16  116  
68a2d76cea4234 Olaf Kirch           2006-10-04  117  	list_add_tail(&block->b_list, pos);
^1da177e4c3f41 Linus Torvalds       2005-04-16  118  	block->b_when = when;
^1da177e4c3f41 Linus Torvalds       2005-04-16  119  }
^1da177e4c3f41 Linus Torvalds       2005-04-16  120  
f904be9cc77f36 Bryan Schumaker      2010-09-21  121  static void nlmsvc_insert_block(struct nlm_block *block, unsigned long when)
f904be9cc77f36 Bryan Schumaker      2010-09-21  122  {
f904be9cc77f36 Bryan Schumaker      2010-09-21  123  	spin_lock(&nlm_blocked_lock);
f904be9cc77f36 Bryan Schumaker      2010-09-21  124  	nlmsvc_insert_block_locked(block, when);
f904be9cc77f36 Bryan Schumaker      2010-09-21  125  	spin_unlock(&nlm_blocked_lock);
f904be9cc77f36 Bryan Schumaker      2010-09-21  126  }
f904be9cc77f36 Bryan Schumaker      2010-09-21  127  
^1da177e4c3f41 Linus Torvalds       2005-04-16  128  /*
^1da177e4c3f41 Linus Torvalds       2005-04-16  129   * Remove a block from the global list
^1da177e4c3f41 Linus Torvalds       2005-04-16  130   */
68a2d76cea4234 Olaf Kirch           2006-10-04  131  static inline void
^1da177e4c3f41 Linus Torvalds       2005-04-16  132  nlmsvc_remove_block(struct nlm_block *block)
^1da177e4c3f41 Linus Torvalds       2005-04-16  133  {
f904be9cc77f36 Bryan Schumaker      2010-09-21  134  	spin_lock(&nlm_blocked_lock);
be2be5f7f44364 Alexander Aring      2023-07-20  135  	if (!list_empty(&block->b_list)) {
68a2d76cea4234 Olaf Kirch           2006-10-04  136  		list_del_init(&block->b_list);
f904be9cc77f36 Bryan Schumaker      2010-09-21  137  		spin_unlock(&nlm_blocked_lock);
6849c0cab69f5d Trond Myklebust      2006-03-20  138  		nlmsvc_release_block(block);
be2be5f7f44364 Alexander Aring      2023-07-20  139  		return;
^1da177e4c3f41 Linus Torvalds       2005-04-16  140  	}
be2be5f7f44364 Alexander Aring      2023-07-20  141  	spin_unlock(&nlm_blocked_lock);
^1da177e4c3f41 Linus Torvalds       2005-04-16  142  }
^1da177e4c3f41 Linus Torvalds       2005-04-16  143  
^1da177e4c3f41 Linus Torvalds       2005-04-16  144  /*
d9f6eb75d49007 Trond Myklebust      2006-03-20  145   * Find a block for a given lock
^1da177e4c3f41 Linus Torvalds       2005-04-16  146   */
^1da177e4c3f41 Linus Torvalds       2005-04-16  147  static struct nlm_block *
d9f6eb75d49007 Trond Myklebust      2006-03-20  148  nlmsvc_lookup_block(struct nlm_file *file, struct nlm_lock *lock)
^1da177e4c3f41 Linus Torvalds       2005-04-16  149  {
68a2d76cea4234 Olaf Kirch           2006-10-04  150  	struct nlm_block	*block;
^1da177e4c3f41 Linus Torvalds       2005-04-16  151  	struct file_lock	*fl;
^1da177e4c3f41 Linus Torvalds       2005-04-16  152  
^1da177e4c3f41 Linus Torvalds       2005-04-16  153  	dprintk("lockd: nlmsvc_lookup_block f=%p pd=%d %Ld-%Ld ty=%d\n",
^1da177e4c3f41 Linus Torvalds       2005-04-16  154  				file, lock->fl.fl_pid,
^1da177e4c3f41 Linus Torvalds       2005-04-16  155  				(long long)lock->fl.fl_start,
^1da177e4c3f41 Linus Torvalds       2005-04-16  156  				(long long)lock->fl.fl_end, lock->fl.fl_type);
be2be5f7f44364 Alexander Aring      2023-07-20  157  	spin_lock(&nlm_blocked_lock);
68a2d76cea4234 Olaf Kirch           2006-10-04  158  	list_for_each_entry(block, &nlm_blocked, b_list) {
92737230dd3f14 Trond Myklebust      2006-03-20  159  		fl = &block->b_call->a_args.lock.fl;
^1da177e4c3f41 Linus Torvalds       2005-04-16 @160  		dprintk("lockd: check f=%p pd=%d %Ld-%Ld ty=%d cookie=%s\n",
^1da177e4c3f41 Linus Torvalds       2005-04-16  161  				block->b_file, fl->fl_pid,
^1da177e4c3f41 Linus Torvalds       2005-04-16  162  				(long long)fl->fl_start,
^1da177e4c3f41 Linus Torvalds       2005-04-16  163  				(long long)fl->fl_end, fl->fl_type,
92737230dd3f14 Trond Myklebust      2006-03-20 @164  				nlmdbg_cookie2a(&block->b_call->a_args.cookie));
^1da177e4c3f41 Linus Torvalds       2005-04-16  165  		if (block->b_file == file && nlm_compare_locks(fl, &lock->fl)) {
6849c0cab69f5d Trond Myklebust      2006-03-20  166  			kref_get(&block->b_count);
be2be5f7f44364 Alexander Aring      2023-07-20  167  			spin_unlock(&nlm_blocked_lock);
^1da177e4c3f41 Linus Torvalds       2005-04-16  168  			return block;
^1da177e4c3f41 Linus Torvalds       2005-04-16  169  		}
^1da177e4c3f41 Linus Torvalds       2005-04-16  170  	}
be2be5f7f44364 Alexander Aring      2023-07-20  171  	spin_unlock(&nlm_blocked_lock);
^1da177e4c3f41 Linus Torvalds       2005-04-16  172  
^1da177e4c3f41 Linus Torvalds       2005-04-16  173  	return NULL;
^1da177e4c3f41 Linus Torvalds       2005-04-16  174  }
^1da177e4c3f41 Linus Torvalds       2005-04-16  175  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ