* [dhowells-fs:rxrpc-next 2/3] net/rxrpc/conn_client.c:494:1-7: preceding lock on line 471 (fwd)
@ 2020-09-15 8:19 Julia Lawall
2020-09-29 21:05 ` David Howells
0 siblings, 1 reply; 2+ messages in thread
From: Julia Lawall @ 2020-09-15 8:19 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 4330 bytes --]
Does the spin lock taken on line 471 need to be released in the !usable
case?
The return on line 494 also looks odd for a void function.
julia
---------- Forwarded message ----------
Date: Tue, 15 Sep 2020 09:39:41 +0800
From: kernel test robot <lkp@intel.com>
To: kbuild(a)lists.01.org
Cc: lkp(a)intel.com, Julia Lawall <julia.lawall@lip6.fr>
Subject: [dhowells-fs:rxrpc-next 2/3] net/rxrpc/conn_client.c:494:1-7: preceding
lock on line 471
CC: kbuild-all(a)lists.01.org
TO: David Howells <dhowells@redhat.com>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git rxrpc-next
head: 288827d53e8edcca94caf6a507105fcbd20f419d
commit: 245500d853e9f20036cec7df4f6984ece4c6bf26 [2/3] rxrpc: Rewrite the client connection manager
:::::: branch date: 6 days ago
:::::: commit date: 6 days ago
config: i386-randconfig-c001-20200914 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Julia Lawall <julia.lawall@lip6.fr>
coccinelle warnings: (new ones prefixed by >>)
>> net/rxrpc/conn_client.c:494:1-7: preceding lock on line 471
# https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git/commit/?id=245500d853e9f20036cec7df4f6984ece4c6bf26
git remote add dhowells-fs https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git
git fetch --no-tags dhowells-fs rxrpc-next
git checkout 245500d853e9f20036cec7df4f6984ece4c6bf26
vim +494 net/rxrpc/conn_client.c
45025bceef17ed David Howells 2016-08-24 459
45025bceef17ed David Howells 2016-08-24 460 /*
245500d853e9f2 David Howells 2020-07-01 461 * Add a connection to a bundle if there are no usable connections or we have
245500d853e9f2 David Howells 2020-07-01 462 * connections waiting for extra capacity.
45025bceef17ed David Howells 2016-08-24 463 */
245500d853e9f2 David Howells 2020-07-01 464 static void rxrpc_maybe_add_conn(struct rxrpc_bundle *bundle, gfp_t gfp)
45025bceef17ed David Howells 2016-08-24 465 {
245500d853e9f2 David Howells 2020-07-01 466 struct rxrpc_call *call;
245500d853e9f2 David Howells 2020-07-01 467 int i, usable;
45025bceef17ed David Howells 2016-08-24 468
245500d853e9f2 David Howells 2020-07-01 469 _enter("");
245500d853e9f2 David Howells 2020-07-01 470
245500d853e9f2 David Howells 2020-07-01 @471 spin_lock(&bundle->channel_lock);
245500d853e9f2 David Howells 2020-07-01 472
245500d853e9f2 David Howells 2020-07-01 473 /* See if there are any usable connections. */
245500d853e9f2 David Howells 2020-07-01 474 usable = 0;
245500d853e9f2 David Howells 2020-07-01 475 for (i = 0; i < ARRAY_SIZE(bundle->conns); i++)
245500d853e9f2 David Howells 2020-07-01 476 if (rxrpc_may_reuse_conn(bundle->conns[i]))
245500d853e9f2 David Howells 2020-07-01 477 usable++;
245500d853e9f2 David Howells 2020-07-01 478
245500d853e9f2 David Howells 2020-07-01 479 if (!usable && !list_empty(&bundle->waiting_calls)) {
245500d853e9f2 David Howells 2020-07-01 480 call = list_first_entry(&bundle->waiting_calls,
245500d853e9f2 David Howells 2020-07-01 481 struct rxrpc_call, chan_wait_link);
245500d853e9f2 David Howells 2020-07-01 482 if (test_bit(RXRPC_CALL_UPGRADE, &call->flags))
245500d853e9f2 David Howells 2020-07-01 483 bundle->try_upgrade = true;
245500d853e9f2 David Howells 2020-07-01 484 }
245500d853e9f2 David Howells 2020-07-01 485
245500d853e9f2 David Howells 2020-07-01 486 if (!usable)
245500d853e9f2 David Howells 2020-07-01 487 goto alloc_conn;
245500d853e9f2 David Howells 2020-07-01 488
245500d853e9f2 David Howells 2020-07-01 489 spin_unlock(&bundle->channel_lock);
245500d853e9f2 David Howells 2020-07-01 490 _leave("");
245500d853e9f2 David Howells 2020-07-01 491 return;
245500d853e9f2 David Howells 2020-07-01 492
245500d853e9f2 David Howells 2020-07-01 493 alloc_conn:
245500d853e9f2 David Howells 2020-07-01 @494 return rxrpc_add_conn_to_bundle(bundle, gfp);
45025bceef17ed David Howells 2016-08-24 495 }
45025bceef17ed David Howells 2016-08-24 496
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 30398 bytes --]
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [dhowells-fs:rxrpc-next 2/3] net/rxrpc/conn_client.c:494:1-7: preceding lock on line 471 (fwd)
2020-09-15 8:19 [dhowells-fs:rxrpc-next 2/3] net/rxrpc/conn_client.c:494:1-7: preceding lock on line 471 (fwd) Julia Lawall
@ 2020-09-29 21:05 ` David Howells
0 siblings, 0 replies; 2+ messages in thread
From: David Howells @ 2020-09-29 21:05 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 648 bytes --]
Julia Lawall <julia.lawall@inria.fr> wrote:
> Does the spin lock taken on line 471 need to be released in the !usable
> case?
rxrpc_add_conn_to_bundle() releases the lock. It's marked with __releases so
the checker shouldn't complain. I wanted to put the manipulation of
bundle->alloc_conn together - which meant moving out that lock release.
> The return on line 494 also looks odd for a void function.
At one point they were both int, but it doesn't really matter - gcc is fine
with it. It does have the advantage that if one of them changes return type,
this will cause a complaint if the other isn't also changed.
David
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2020-09-29 21:05 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-15 8:19 [dhowells-fs:rxrpc-next 2/3] net/rxrpc/conn_client.c:494:1-7: preceding lock on line 471 (fwd) Julia Lawall
2020-09-29 21:05 ` David Howells
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.