tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   449dc8c97089a6e09fb2dac4d92b1b7ac0eb7c1e
commit: a271a89c6e4773478b1c4f8213dfe8351ea66723 dm mpath: take m->lock 
spinlock when testing QUEUE_IF_NO_PATH
date:   4 weeks ago
config: arm-randconfig-m031-20200808 (attached as .config)
compiler: arm-linux-gnueabi-gcc (GCC) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <l...@intel.com>

New smatch warnings:
drivers/md/dm-mpath.c:1682 multipath_end_io_bio() error: double unlocked 
'm->lock' (orig line 1675)
drivers/md/dm-mpath.c:1988 multipath_prepare_ioctl() error: double unlocked 
'm->lock' (orig line 1977)

Old smatch warnings:
drivers/md/dm-mpath.c:432 choose_pgpath() error: double unlocked 'm->lock' 
(orig line 402)
drivers/md/dm-mpath.c:443 choose_pgpath() error: double unlocked 'm->lock' 
(orig line 389)
drivers/md/dm-mpath.c:593 __map_bio() error: double unlocked 'm->lock' (orig 
line 589)
drivers/md/dm-mpath.c:1574 pg_init_done() error: double unlocked 'm->lock' 
(orig line 1527)

vim +1682 drivers/md/dm-mpath.c

^1da177e4c3f41 Linus Torvalds          2005-04-16  1647  
4e4cbee93d5613 Christoph Hellwig       2017-06-03  1648  static int 
multipath_end_io_bio(struct dm_target *ti, struct bio *clone,
4e4cbee93d5613 Christoph Hellwig       2017-06-03  1649                         
        blk_status_t *error)
76e33fe4e2c436 Mike Snitzer            2016-05-19  1650  {
14ef1e48269dde Christoph Hellwig       2017-06-03  1651         struct 
multipath *m = ti->private;
14ef1e48269dde Christoph Hellwig       2017-06-03  1652         struct 
dm_mpath_io *mpio = get_mpio_from_bio(clone);
14ef1e48269dde Christoph Hellwig       2017-06-03  1653         struct pgpath 
*pgpath = mpio->pgpath;
76e33fe4e2c436 Mike Snitzer            2016-05-19  1654         unsigned long 
flags;
1be56909845889 Christoph Hellwig       2017-06-03  1655         int r = 
DM_ENDIO_DONE;
76e33fe4e2c436 Mike Snitzer            2016-05-19  1656  
a1275677f8cd06 Keith Busch             2018-01-09  1657         if (!*error || 
!blk_path_error(*error))
14ef1e48269dde Christoph Hellwig       2017-06-03  1658                 goto 
done;
76e33fe4e2c436 Mike Snitzer            2016-05-19  1659  
14ef1e48269dde Christoph Hellwig       2017-06-03  1660         if (pgpath)
14ef1e48269dde Christoph Hellwig       2017-06-03  1661                 
fail_path(pgpath);
76e33fe4e2c436 Mike Snitzer            2016-05-19  1662  
a271a89c6e4773 Mike Snitzer            2020-06-10  1663         if 
(!atomic_read(&m->nr_valid_paths)) {
a271a89c6e4773 Mike Snitzer            2020-06-10  1664                 
spin_lock_irqsave(&m->lock, flags);
a271a89c6e4773 Mike Snitzer            2020-06-10  1665                 if 
(!test_bit(MPATHF_QUEUE_IF_NO_PATH, &m->flags)) {
a862e4e2154289 Mike Snitzer            2020-05-26  1666                         
if (__must_push_back(m)) {
c1fd0abee0d52e Mike Snitzer            2017-12-07  1667                         
        r = DM_ENDIO_REQUEUE;
c1fd0abee0d52e Mike Snitzer            2017-12-07  1668                         
} else {
18a482f5245cc8 Christoph Hellwig       2017-05-15  1669                         
        dm_report_EIO(m);
4e4cbee93d5613 Christoph Hellwig       2017-06-03  1670                         
        *error = BLK_STS_IOERR;
c1fd0abee0d52e Mike Snitzer            2017-12-07  1671                         
}
a271a89c6e4773 Mike Snitzer            2020-06-10  1672                         
spin_unlock_irqrestore(&m->lock, flags);
14ef1e48269dde Christoph Hellwig       2017-06-03  1673                         
goto done;
18a482f5245cc8 Christoph Hellwig       2017-05-15  1674                 }
a271a89c6e4773 Mike Snitzer            2020-06-10 @1675                 
spin_unlock_irqrestore(&m->lock, flags);
a271a89c6e4773 Mike Snitzer            2020-06-10  1676         }
76e33fe4e2c436 Mike Snitzer            2016-05-19  1677  
76e33fe4e2c436 Mike Snitzer            2016-05-19  1678         
spin_lock_irqsave(&m->lock, flags);
76e33fe4e2c436 Mike Snitzer            2016-05-19  1679         
bio_list_add(&m->queued_bios, clone);
76e33fe4e2c436 Mike Snitzer            2016-05-19  1680         if 
(!test_bit(MPATHF_QUEUE_IO, &m->flags))
76e33fe4e2c436 Mike Snitzer            2016-05-19  1681                 
queue_work(kmultipathd, &m->process_queued_bios);
69cea0d45a618a Mike Snitzer            2020-06-10 @1682         
spin_unlock_irqrestore(&m->lock, flags);
76e33fe4e2c436 Mike Snitzer            2016-05-19  1683  
1be56909845889 Christoph Hellwig       2017-06-03  1684         r = 
DM_ENDIO_INCOMPLETE;
14ef1e48269dde Christoph Hellwig       2017-06-03  1685  done:
76e33fe4e2c436 Mike Snitzer            2016-05-19  1686         if (pgpath) {
14ef1e48269dde Christoph Hellwig       2017-06-03  1687                 struct 
path_selector *ps = &pgpath->pg->ps;
14ef1e48269dde Christoph Hellwig       2017-06-03  1688  
76e33fe4e2c436 Mike Snitzer            2016-05-19  1689                 if 
(ps->type->end_io)
087615bf3acdaf Gabriel Krisman Bertazi 2020-04-30  1690                         
ps->type->end_io(ps, &pgpath->path, mpio->nr_bytes,
087615bf3acdaf Gabriel Krisman Bertazi 2020-04-30  1691                         
                 dm_start_time_ns_from_clone(clone));
76e33fe4e2c436 Mike Snitzer            2016-05-19  1692         }
76e33fe4e2c436 Mike Snitzer            2016-05-19  1693  
1be56909845889 Christoph Hellwig       2017-06-03  1694         return r;
76e33fe4e2c436 Mike Snitzer            2016-05-19  1695  }
76e33fe4e2c436 Mike Snitzer            2016-05-19  1696  

:::::: The code at line 1682 was first introduced by commit
:::::: 69cea0d45a618ad4ae74f36386ef1af5128b2b19 dm mpath: changes from initial 
m->flags locking audit

:::::: TO: Mike Snitzer <snit...@redhat.com>
:::::: CC: Mike Snitzer <snit...@redhat.com>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org

Attachment: .config.gz
Description: application/gzip

Reply via email to