CC: [email protected]
TO: Jason Gunthorpe <[email protected]>
CC: Leon Romanovsky <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/leon/linux-rdma.git 
rdma-next
head:   ebf91e681f9ddd176c30210aa0a6140e6dbf14f1
commit: ebf91e681f9ddd176c30210aa0a6140e6dbf14f1 [94/94] RDMA: Allow 
ib_client's to fail when add() is called
:::::: branch date: 34 hours ago
:::::: commit date: 34 hours ago

If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <[email protected]>
Reported-by: Dan Carpenter <[email protected]>

New smatch warnings:
drivers/infiniband/ulp/srp/ib_srp.c:4202 srp_add_one() error: dereferencing 
freed memory 'srp_dev'
net/rds/ib.c:194 rds_ib_add_one() warn: passing zero to 'PTR_ERR'

Old smatch warnings:
drivers/infiniband/ulp/srp/ib_srp.c:2585 srp_cm_rep_handler() error: we 
previously assumed 'ch->rx_ring' could be null (see line 2578)
net/rds/ib.c:210 rds_ib_add_one() warn: passing zero to 'PTR_ERR'
net/rds/ib.c:218 rds_ib_add_one() warn: passing zero to 'PTR_ERR'
net/rds/ib.c:334 rds_ib_conn_info_visitor() error: we previously assumed 'ic' 
could be null (see line 324)
net/rds/ib.c:372 rds6_ib_conn_info_visitor() error: we previously assumed 'ic' 
could be null (see line 361)

# 
https://git.kernel.org/pub/scm/linux/kernel/git/leon/linux-rdma.git/commit/?id=ebf91e681f9ddd176c30210aa0a6140e6dbf14f1
git remote add leon-rdma 
https://git.kernel.org/pub/scm/linux/kernel/git/leon/linux-rdma.git
git remote update leon-rdma
git checkout ebf91e681f9ddd176c30210aa0a6140e6dbf14f1
vim +/srp_dev +4202 drivers/infiniband/ulp/srp/ib_srp.c

dc1435c00fcd10 Leon Romanovsky   2019-05-17  4134  
ebf91e681f9ddd Jason Gunthorpe   2020-03-03  4135  static int 
srp_add_one(struct ib_device *device)
aef9ec39c47f0c Roland Dreier     2005-11-02  4136  {
f5358a172f79e3 Roland Dreier     2006-06-17  4137       struct srp_device 
*srp_dev;
042dd765bdf401 Bart Van Assche   2016-11-21  4138       struct ib_device_attr 
*attr = &device->attrs;
aef9ec39c47f0c Roland Dreier     2005-11-02  4139       struct srp_host *host;
ea1075edcbab7d Jason Gunthorpe   2019-02-12  4140       int mr_page_shift;
ea1075edcbab7d Jason Gunthorpe   2019-02-12  4141       unsigned int p;
52ede08f00ebfc Bart Van Assche   2014-05-20  4142       u64 max_pages_per_mr;
5f071777f9cbd7 Christoph Hellwig 2016-09-05  4143       unsigned int flags = 0;
aef9ec39c47f0c Roland Dreier     2005-11-02  4144  
249f06561fc333 Bart Van Assche   2016-06-03  4145       srp_dev = 
kzalloc(sizeof(*srp_dev), GFP_KERNEL);
f5358a172f79e3 Roland Dreier     2006-06-17  4146       if (!srp_dev)
ebf91e681f9ddd Jason Gunthorpe   2020-03-03  4147               return -ENOMEM;
f5358a172f79e3 Roland Dreier     2006-06-17  4148  
f5358a172f79e3 Roland Dreier     2006-06-17  4149       /*
f5358a172f79e3 Roland Dreier     2006-06-17  4150        * Use the smallest 
page size supported by the HCA, down to a
8f26c9ff9cd031 David Dillow      2011-01-14  4151        * minimum of 4096 
bytes. We're unlikely to build large sglists
8f26c9ff9cd031 David Dillow      2011-01-14  4152        * out of smaller 
entries.
f5358a172f79e3 Roland Dreier     2006-06-17  4153        */
042dd765bdf401 Bart Van Assche   2016-11-21  4154       mr_page_shift           
= max(12, ffs(attr->page_size_cap) - 1);
52ede08f00ebfc Bart Van Assche   2014-05-20  4155       srp_dev->mr_page_size   
= 1 << mr_page_shift;
52ede08f00ebfc Bart Van Assche   2014-05-20  4156       srp_dev->mr_page_mask   
= ~((u64) srp_dev->mr_page_size - 1);
042dd765bdf401 Bart Van Assche   2016-11-21  4157       max_pages_per_mr        
= attr->max_mr_size;
52ede08f00ebfc Bart Van Assche   2014-05-20  4158       
do_div(max_pages_per_mr, srp_dev->mr_page_size);
509c5f33f4f6dc Bart Van Assche   2016-05-12  4159       pr_debug("%s: %llu / %u 
= %llu <> %u\n", __func__,
042dd765bdf401 Bart Van Assche   2016-11-21  4160                
attr->max_mr_size, srp_dev->mr_page_size,
509c5f33f4f6dc Bart Van Assche   2016-05-12  4161                
max_pages_per_mr, SRP_MAX_PAGES_PER_MR);
52ede08f00ebfc Bart Van Assche   2014-05-20  4162       
srp_dev->max_pages_per_mr = min_t(u64, SRP_MAX_PAGES_PER_MR,
52ede08f00ebfc Bart Van Assche   2014-05-20  4163                               
          max_pages_per_mr);
835ee624c99d0b Bart Van Assche   2016-05-12  4164  
3023a1e93656c0 Kamal Heib        2018-12-10  4165       srp_dev->has_fmr = 
(device->ops.alloc_fmr &&
3023a1e93656c0 Kamal Heib        2018-12-10  4166                           
device->ops.dealloc_fmr &&
3023a1e93656c0 Kamal Heib        2018-12-10  4167                           
device->ops.map_phys_fmr &&
3023a1e93656c0 Kamal Heib        2018-12-10  4168                           
device->ops.unmap_fmr);
042dd765bdf401 Bart Van Assche   2016-11-21  4169       srp_dev->has_fr = 
(attr->device_cap_flags &
835ee624c99d0b Bart Van Assche   2016-05-12  4170                          
IB_DEVICE_MEM_MGT_EXTENSIONS);
c222a39f0d2652 Bart Van Assche   2016-05-12  4171       if (!never_register && 
!srp_dev->has_fmr && !srp_dev->has_fr) {
835ee624c99d0b Bart Van Assche   2016-05-12  4172               
dev_warn(&device->dev, "neither FMR nor FR is supported\n");
c222a39f0d2652 Bart Van Assche   2016-05-12  4173       } else if 
(!never_register &&
042dd765bdf401 Bart Van Assche   2016-11-21  4174                  
attr->max_mr_size >= 2 * srp_dev->mr_page_size) {
835ee624c99d0b Bart Van Assche   2016-05-12  4175               
srp_dev->use_fast_reg = (srp_dev->has_fr &&
835ee624c99d0b Bart Van Assche   2016-05-12  4176                               
         (!srp_dev->has_fmr || prefer_fr));
835ee624c99d0b Bart Van Assche   2016-05-12  4177               
srp_dev->use_fmr = !srp_dev->use_fast_reg && srp_dev->has_fmr;
509c5f33f4f6dc Bart Van Assche   2016-05-12  4178       }
835ee624c99d0b Bart Van Assche   2016-05-12  4179  
5f071777f9cbd7 Christoph Hellwig 2016-09-05  4180       if (never_register || 
!register_always ||
5f071777f9cbd7 Christoph Hellwig 2016-09-05  4181           (!srp_dev->has_fmr 
&& !srp_dev->has_fr))
5f071777f9cbd7 Christoph Hellwig 2016-09-05  4182               flags |= 
IB_PD_UNSAFE_GLOBAL_RKEY;
5f071777f9cbd7 Christoph Hellwig 2016-09-05  4183  
5cfb17828d877a Bart Van Assche   2014-05-20  4184       if 
(srp_dev->use_fast_reg) {
5cfb17828d877a Bart Van Assche   2014-05-20  4185               
srp_dev->max_pages_per_mr =
5cfb17828d877a Bart Van Assche   2014-05-20  4186                       
min_t(u32, srp_dev->max_pages_per_mr,
042dd765bdf401 Bart Van Assche   2016-11-21  4187                             
attr->max_fast_reg_page_list_len);
5cfb17828d877a Bart Van Assche   2014-05-20  4188       }
52ede08f00ebfc Bart Van Assche   2014-05-20  4189       srp_dev->mr_max_size    
= srp_dev->mr_page_size *
52ede08f00ebfc Bart Van Assche   2014-05-20  4190                               
   srp_dev->max_pages_per_mr;
4a061b287b1eb5 Or Gerlitz        2015-12-18  4191       pr_debug("%s: 
mr_page_shift = %d, device->max_mr_size = %#llx, 
device->max_fast_reg_page_list_len = %u, max_pages_per_mr = %d, mr_max_size = 
%#x\n",
6c8541118bd53b Jason Gunthorpe   2018-09-20  4192                
dev_name(&device->dev), mr_page_shift, attr->max_mr_size,
042dd765bdf401 Bart Van Assche   2016-11-21  4193                
attr->max_fast_reg_page_list_len,
52ede08f00ebfc Bart Van Assche   2014-05-20  4194                
srp_dev->max_pages_per_mr, srp_dev->mr_max_size);
f5358a172f79e3 Roland Dreier     2006-06-17  4195  
f5358a172f79e3 Roland Dreier     2006-06-17  4196       
INIT_LIST_HEAD(&srp_dev->dev_list);
f5358a172f79e3 Roland Dreier     2006-06-17  4197  
f5358a172f79e3 Roland Dreier     2006-06-17  4198       srp_dev->dev = device;
5f071777f9cbd7 Christoph Hellwig 2016-09-05  4199       srp_dev->pd  = 
ib_alloc_pd(device, flags);
ebf91e681f9ddd Jason Gunthorpe   2020-03-03  4200       if 
(IS_ERR(srp_dev->pd)) {
ebf91e681f9ddd Jason Gunthorpe   2020-03-03  4201               kfree(srp_dev);
ebf91e681f9ddd Jason Gunthorpe   2020-03-03 @4202               return 
PTR_ERR(srp_dev->pd);
ebf91e681f9ddd Jason Gunthorpe   2020-03-03  4203       }
f5358a172f79e3 Roland Dreier     2006-06-17  4204  
cee687b68dbc71 Bart Van Assche   2017-10-11  4205       if (flags & 
IB_PD_UNSAFE_GLOBAL_RKEY) {
cee687b68dbc71 Bart Van Assche   2017-10-11  4206               
srp_dev->global_rkey = srp_dev->pd->unsafe_global_rkey;
cee687b68dbc71 Bart Van Assche   2017-10-11  4207               
WARN_ON_ONCE(srp_dev->global_rkey == 0);
cee687b68dbc71 Bart Van Assche   2017-10-11  4208       }
f5358a172f79e3 Roland Dreier     2006-06-17  4209  
ea1075edcbab7d Jason Gunthorpe   2019-02-12  4210       rdma_for_each_port 
(device, p) {
f5358a172f79e3 Roland Dreier     2006-06-17  4211               host = 
srp_add_port(srp_dev, p);
aef9ec39c47f0c Roland Dreier     2005-11-02  4212               if (host)
f5358a172f79e3 Roland Dreier     2006-06-17  4213                       
list_add_tail(&host->list, &srp_dev->dev_list);
aef9ec39c47f0c Roland Dreier     2005-11-02  4214       }
aef9ec39c47f0c Roland Dreier     2005-11-02  4215  
f5358a172f79e3 Roland Dreier     2006-06-17  4216       
ib_set_client_data(device, &srp_client, srp_dev);
ebf91e681f9ddd Jason Gunthorpe   2020-03-03  4217       return 0;
aef9ec39c47f0c Roland Dreier     2005-11-02  4218  }
aef9ec39c47f0c Roland Dreier     2005-11-02  4219  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]
_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to