lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Fri, 7 Apr 2017 17:24:12 +0300
From:   Dan Carpenter <dan.carpenter@...cle.com>
To:     Colin King <colin.king@...onical.com>,
        Santosh Shilimkar <santosh.shilimkar@...cle.com>
Cc:     "David S . Miller" <davem@...emloft.net>, netdev@...r.kernel.org,
        linux-rdma@...r.kernel.org, rds-devel@....oracle.com,
        kernel-janitors@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH] RDS: IB: ensure an initialized ret is printed in pr_warn
 message

Setting it to zero doesn't seem like the right thing, it should be an
error code.  Oh, heh...  Smatch parses this one correctly.  "ret" is
always initialized but the code is probably buggy in a different way:

net/rds/ib_rdma.c
   539  void *rds_ib_get_mr(struct scatterlist *sg, unsigned long nents,
   540                      struct rds_sock *rs, u32 *key_ret)
   541  {
   542          struct rds_ib_device *rds_ibdev;
   543          struct rds_ib_mr *ibmr = NULL;
   544          struct rds_ib_connection *ic = rs->rs_conn->c_transport_data;
   545          int ret;
   546  
   547          rds_ibdev = rds_ib_get_device(rs->rs_bound_addr);
   548          if (!rds_ibdev) {
   549                  ret = -ENODEV;
   550                  goto out;
   551          }
   552  
   553          if (!rds_ibdev->mr_8k_pool || !rds_ibdev->mr_1m_pool) {
   554                  ret = -ENODEV;
   555                  goto out;
   556          }
   557  
   558          if (rds_ibdev->use_fastreg)
   559                  ibmr = rds_ib_reg_frmr(rds_ibdev, ic, sg, nents, key_ret);
   560          else
   561                  ibmr = rds_ib_reg_fmr(rds_ibdev, sg, nents, key_ret);
   562          if (ibmr)
                    ^^^^
This condition is always true because those functions return ERR_PTRs
not NULLs.

   563                  rds_ibdev = NULL;
   564  
   565   out:
   566          if (!ibmr)
                    ^^^^^
This condition implies that "ret" is set to an error code.

   567                  pr_warn("RDS/IB: rds_ib_get_mr failed (errno=%d)\n", ret);
   568  
   569          if (rds_ibdev)
   570                  rds_ib_dev_put(rds_ibdev);
   571  
   572          return ibmr;
   573  }

regards,
dan carpenter

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ