* [martinetd-linux:9p-test 6/6] net/9p/client.c:823 p9_client_handle_async() error: double unlocked 'c->lock' (orig line 813)
@ 2020-06-25 19:58 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2020-06-25 19:58 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 5740 bytes --]
CC: kbuild-all(a)lists.01.org
TO: Dominique Martinet <dominique.martinet@cea.fr>
CC: Tomas Bortoli <tomasbortoli@gmail.com>
tree: https://github.com/martinetd/linux.git 9p-test
head: 62cca2875aa01fc318835a838a09e4fc17ecd117
commit: 62cca2875aa01fc318835a838a09e4fc17ecd117 [6/6] 9p/net: make flush asynchronous
:::::: branch date: 9 hours ago
:::::: commit date: 9 hours ago
config: h8300-randconfig-m031-20200624 (attached as .config)
compiler: h8300-linux-gcc (GCC) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
smatch warnings:
net/9p/client.c:823 p9_client_handle_async() error: double unlocked 'c->lock' (orig line 813)
# https://github.com/martinetd/linux/commit/62cca2875aa01fc318835a838a09e4fc17ecd117
git remote add martinetd-linux https://github.com/martinetd/linux.git
git remote update martinetd-linux
git checkout 62cca2875aa01fc318835a838a09e4fc17ecd117
vim +823 net/9p/client.c
62cca2875aa01f Dominique Martinet 2018-11-17 777
3b8a90225b4326 Dominique Martinet 2018-11-16 778 static void p9_client_handle_async(struct p9_client *c, bool free_all)
3b8a90225b4326 Dominique Martinet 2018-11-16 779 {
3b8a90225b4326 Dominique Martinet 2018-11-16 780 struct p9_req_t *req, *nreq;
3b8a90225b4326 Dominique Martinet 2018-11-16 781
3b8a90225b4326 Dominique Martinet 2018-11-16 782 /* it's ok to miss some async replies here, do a quick check without
3b8a90225b4326 Dominique Martinet 2018-11-16 783 * lock first unless called with free_all
3b8a90225b4326 Dominique Martinet 2018-11-16 784 */
3b8a90225b4326 Dominique Martinet 2018-11-16 785 if (!free_all && list_empty(&c->async_req_list))
3b8a90225b4326 Dominique Martinet 2018-11-16 786 return;
3b8a90225b4326 Dominique Martinet 2018-11-16 787
3b8a90225b4326 Dominique Martinet 2018-11-16 788 spin_lock_irq(&c->async_req_lock);
3b8a90225b4326 Dominique Martinet 2018-11-16 789 list_for_each_entry_safe(req, nreq, &c->async_req_list, async_list) {
3b8a90225b4326 Dominique Martinet 2018-11-16 790 if (free_all && req->status < REQ_STATUS_RCVD) {
3b8a90225b4326 Dominique Martinet 2018-11-16 791 p9_debug(P9_DEBUG_ERROR,
3b8a90225b4326 Dominique Martinet 2018-11-16 792 "final async handler found req tag %d type %d status %d\n",
3b8a90225b4326 Dominique Martinet 2018-11-16 793 req->tc.tag, req->tc.id, req->status);
3b8a90225b4326 Dominique Martinet 2018-11-16 794 if (c->trans_mod->cancelled)
3b8a90225b4326 Dominique Martinet 2018-11-16 795 c->trans_mod->cancelled(c, req);
3b8a90225b4326 Dominique Martinet 2018-11-16 796 /* won't receive reply now */
3b8a90225b4326 Dominique Martinet 2018-11-16 797 p9_req_put(req);
3b8a90225b4326 Dominique Martinet 2018-11-16 798 }
3b8a90225b4326 Dominique Martinet 2018-11-16 799 if (free_all || req->status >= REQ_STATUS_RCVD) {
3b8a90225b4326 Dominique Martinet 2018-11-16 800 /* Put old refs whatever reqs actually returned */
62cca2875aa01f Dominique Martinet 2018-11-17 801 if (req->tc.id == P9_TFLUSH) {
62cca2875aa01f Dominique Martinet 2018-11-17 802 p9_debug(P9_DEBUG_MUX,
62cca2875aa01f Dominique Martinet 2018-11-17 803 "flushing oldreq tag %d status %d, flush_req tag %d\n",
62cca2875aa01f Dominique Martinet 2018-11-17 804 req->flushed_req->tc.tag,
62cca2875aa01f Dominique Martinet 2018-11-17 805 req->flushed_req->status,
62cca2875aa01f Dominique Martinet 2018-11-17 806 req->tc.tag);
62cca2875aa01f Dominique Martinet 2018-11-17 807 if (req->flushed_req->status < REQ_STATUS_RCVD) {
62cca2875aa01f Dominique Martinet 2018-11-17 808 /* won't receive reply now */
62cca2875aa01f Dominique Martinet 2018-11-17 809 if (c->trans_mod->cancelled)
62cca2875aa01f Dominique Martinet 2018-11-17 810 c->trans_mod->cancelled(c, req);
62cca2875aa01f Dominique Martinet 2018-11-17 811 p9_req_put(req->flushed_req);
62cca2875aa01f Dominique Martinet 2018-11-17 812 }
62cca2875aa01f Dominique Martinet 2018-11-17 @813 if (!p9_tag_remove(c, req->flushed_req))
62cca2875aa01f Dominique Martinet 2018-11-17 814 p9_debug(P9_DEBUG_ERROR,
62cca2875aa01f Dominique Martinet 2018-11-17 815 "oldreq tag %d status %d still has ref\n",
62cca2875aa01f Dominique Martinet 2018-11-17 816 req->flushed_req->tc.tag,
62cca2875aa01f Dominique Martinet 2018-11-17 817 req->flushed_req->status);
62cca2875aa01f Dominique Martinet 2018-11-17 818 }
b1d37de6821358 Dominique Martinet 2018-11-17 819 if (req->tc.id == P9_TCLUNK) {
b1d37de6821358 Dominique Martinet 2018-11-17 820 p9_fid_destroy(req->clunked_fid);
b1d37de6821358 Dominique Martinet 2018-11-17 821 }
3b8a90225b4326 Dominique Martinet 2018-11-16 822 list_del(&req->async_list);
3b8a90225b4326 Dominique Martinet 2018-11-16 @823 p9_tag_remove(c, req);
3b8a90225b4326 Dominique Martinet 2018-11-16 824 }
3b8a90225b4326 Dominique Martinet 2018-11-16 825 }
3b8a90225b4326 Dominique Martinet 2018-11-16 826 spin_unlock_irq(&c->async_req_lock);
3b8a90225b4326 Dominique Martinet 2018-11-16 827 }
3b8a90225b4326 Dominique Martinet 2018-11-16 828
:::::: The code at line 823 was first introduced by commit
:::::: 3b8a90225b4326032b6492e1b04db4f9ecf251ef 9p/net: implement asynchronous rpc
:::::: TO: Dominique Martinet <dominique.martinet@cea.fr>
:::::: CC: Dominique Martinet <dominique.martinet@cea.fr>
---
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: 29729 bytes --]
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2020-06-25 19:58 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-25 19:58 [martinetd-linux:9p-test 6/6] net/9p/client.c:823 p9_client_handle_async() error: double unlocked 'c->lock' (orig line 813) kernel test robot
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.