On Mon, Feb 15, 2021 at 03:02:32PM +0100, Jinpu Wang wrote:
> On Mon, Feb 15, 2021 at 2:58 PM Dan Carpenter <[email protected]> 
> wrote:
> >
> > On Mon, Feb 15, 2021 at 02:03:31PM +0100, Jinpu Wang wrote:
> > > Hi, Dan,
> > >
> > > On Mon, Feb 15, 2021 at 1:44 PM Dan Carpenter <[email protected]> 
> > > wrote:
> > > >
> > > > tree:   https://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma.git   
> > > > wip/jgg-for-next
> > > > head:   c88b31c46cefe50f524a1ad3deaf1599bc9ee2e6
> > > > commit: f0751419d3a15fb06d9b7d9435312472c3cb122d [198/203] RDMA/rtrs: 
> > > > Only allow addition of path to an already established session
> > > > config: ia64-randconfig-m031-20210209 (attached as .config)
> > > > compiler: ia64-linux-gcc (GCC) 9.3.0
> > > >
> > > > If you fix the issue, kindly add following tag as appropriate
> > > > Reported-by: kernel test robot <[email protected]>
> > > > Reported-by: Dan Carpenter <[email protected]>
> > > >
> > > > smatch warnings:
> > > > drivers/infiniband/ulp/rtrs/rtrs-srv.c:1805 rtrs_rdma_connect() warn: 
> > > > passing zero to 'PTR_ERR'
> > > >
> > > > vim +/PTR_ERR +1805 drivers/infiniband/ulp/rtrs/rtrs-srv.c
> > > >
> > > > 9cb837480424e7 Jack Wang      2020-05-11  1760  static int 
> > > > rtrs_rdma_connect(struct rdma_cm_id *cm_id,
> > > > 9cb837480424e7 Jack Wang      2020-05-11  1761                          
> > > >       const struct rtrs_msg_conn_req *msg,
> > > > 9cb837480424e7 Jack Wang      2020-05-11  1762                          
> > > >       size_t len)
> > > > 9cb837480424e7 Jack Wang      2020-05-11  1763  {
> > > > 9cb837480424e7 Jack Wang      2020-05-11  1764          struct 
> > > > rtrs_srv_ctx *ctx = cm_id->context;
> > > > 9cb837480424e7 Jack Wang      2020-05-11  1765          struct 
> > > > rtrs_srv_sess *sess;
> > > > 9cb837480424e7 Jack Wang      2020-05-11  1766          struct rtrs_srv 
> > > > *srv;
> > > > 9cb837480424e7 Jack Wang      2020-05-11  1767
> > > > 9cb837480424e7 Jack Wang      2020-05-11  1768          u16 version, 
> > > > con_num, cid;
> > > > 9cb837480424e7 Jack Wang      2020-05-11  1769          u16 recon_cnt;
> > > > 9cb837480424e7 Jack Wang      2020-05-11  1770          int err;
> > > > 9cb837480424e7 Jack Wang      2020-05-11  1771
> > > > 9cb837480424e7 Jack Wang      2020-05-11  1772          if (len < 
> > > > sizeof(*msg)) {
> > > > 9cb837480424e7 Jack Wang      2020-05-11  1773                  
> > > > pr_err("Invalid RTRS connection request\n");
> > > > 9cb837480424e7 Jack Wang      2020-05-11  1774                  goto 
> > > > reject_w_econnreset;
> > > > 9cb837480424e7 Jack Wang      2020-05-11  1775          }
> > > > 9cb837480424e7 Jack Wang      2020-05-11  1776          if 
> > > > (le16_to_cpu(msg->magic) != RTRS_MAGIC) {
> > > > 9cb837480424e7 Jack Wang      2020-05-11  1777                  
> > > > pr_err("Invalid RTRS magic\n");
> > > > 9cb837480424e7 Jack Wang      2020-05-11  1778                  goto 
> > > > reject_w_econnreset;
> > > > 9cb837480424e7 Jack Wang      2020-05-11  1779          }
> > > > 9cb837480424e7 Jack Wang      2020-05-11  1780          version = 
> > > > le16_to_cpu(msg->version);
> > > > 9cb837480424e7 Jack Wang      2020-05-11  1781          if (version >> 
> > > > 8 != RTRS_PROTO_VER_MAJOR) {
> > > > 9cb837480424e7 Jack Wang      2020-05-11  1782                  
> > > > pr_err("Unsupported major RTRS version: %d, expected %d\n",
> > > > 9cb837480424e7 Jack Wang      2020-05-11  1783                         
> > > > version >> 8, RTRS_PROTO_VER_MAJOR);
> > > > 9cb837480424e7 Jack Wang      2020-05-11  1784                  goto 
> > > > reject_w_econnreset;
> > > > 9cb837480424e7 Jack Wang      2020-05-11  1785          }
> > > > 9cb837480424e7 Jack Wang      2020-05-11  1786          con_num = 
> > > > le16_to_cpu(msg->cid_num);
> > > > 9cb837480424e7 Jack Wang      2020-05-11  1787          if (con_num > 
> > > > 4096) {
> > > > 9cb837480424e7 Jack Wang      2020-05-11  1788                  /* 
> > > > Sanity check */
> > > > 9cb837480424e7 Jack Wang      2020-05-11  1789                  
> > > > pr_err("Too many connections requested: %d\n", con_num);
> > > > 9cb837480424e7 Jack Wang      2020-05-11  1790                  goto 
> > > > reject_w_econnreset;
> > > > 9cb837480424e7 Jack Wang      2020-05-11  1791          }
> > > > 9cb837480424e7 Jack Wang      2020-05-11  1792          cid = 
> > > > le16_to_cpu(msg->cid);
> > > > 9cb837480424e7 Jack Wang      2020-05-11  1793          if (cid >= 
> > > > con_num) {
> > > > 9cb837480424e7 Jack Wang      2020-05-11  1794                  /* 
> > > > Sanity check */
> > > > 9cb837480424e7 Jack Wang      2020-05-11  1795                  
> > > > pr_err("Incorrect cid: %d >= %d\n", cid, con_num);
> > > > 9cb837480424e7 Jack Wang      2020-05-11  1796                  goto 
> > > > reject_w_econnreset;
> > > > 9cb837480424e7 Jack Wang      2020-05-11  1797          }
> > > > 9cb837480424e7 Jack Wang      2020-05-11  1798          recon_cnt = 
> > > > le16_to_cpu(msg->recon_cnt);
> > > > f0751419d3a15f Md Haris Iqbal 2021-02-12  1799          srv = 
> > > > get_or_create_srv(ctx, &msg->paths_uuid, msg->first_conn);
> > > > d715ff8acbd587 Guoqing Jiang  2020-10-23  1800          /*
> > > > d715ff8acbd587 Guoqing Jiang  2020-10-23  1801           * "refcount == 
> > > > 0" happens if a previous thread calls get_or_create_srv
> > > > d715ff8acbd587 Guoqing Jiang  2020-10-23  1802           * allocate 
> > > > srv, but chunks of srv are not allocated yet.
> > > > d715ff8acbd587 Guoqing Jiang  2020-10-23  1803           */
> > > > f0751419d3a15f Md Haris Iqbal 2021-02-12  1804          if (IS_ERR(srv) 
> > > > || refcount_read(&srv->refcount) == 0) {
> > > > f0751419d3a15f Md Haris Iqbal 2021-02-12 @1805                  err = 
> > > > PTR_ERR(srv);
> > > >
> > > > It's not 100% clear to me that an error code is required when
> > > > refcount_read() is zero.  Maybe "err = 0;" is okay in that situation?
> > > I don't see how srv can be zero
> >
> > The cross function database was probably out of date.
> 
> Thanks for the hint, just curious where is the cross-function
> database? is it auto-generated by gcc during compile?

This is a Smatch warning.

https://www.spinics.net/lists/smatch/msg00568.html

regards,
dan carpenter
_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to