All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jason Gunthorpe <jgg@nvidia.com>
To: kbuild-all@lists.01.org
Subject: Re: drivers/infiniband/hw/qedr/verbs.c:1925 qedr_create_user_qp() error: we previously assumed 'ctx' could be null (see line 1900)
Date: Tue, 16 Feb 2021 15:03:21 -0400	[thread overview]
Message-ID: <20210216190321.GG4247@nvidia.com> (raw)
In-Reply-To: <20210215133125.GP2087@kadam>

[-- Attachment #1: Type: text/plain, Size: 9081 bytes --]

On Mon, Feb 15, 2021 at 04:31:25PM +0300, Dan Carpenter wrote:
> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> head:   dcc0b49040c70ad827a7f3d58a21b01fdb14e749
> commit: 06e8d1df46ed52eca6915a2a76341ca65cc428b9 RDMA/qedr: Add support for user mode XRC-SRQ's
> config: x86_64-randconfig-m001-20210213 (attached as .config)
> compiler: gcc-9 (Debian 9.3.0-15) 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:
> drivers/infiniband/hw/qedr/verbs.c:1925 qedr_create_user_qp() error: we previously assumed 'ctx' could be null (see line 1900)
> 
> vim +/ctx +1925 drivers/infiniband/hw/qedr/verbs.c
> 
> df15856132bc83 Amrani, Ram       2016-12-22  1830  static int qedr_create_user_qp(struct qedr_dev *dev,
> cecbcddf6461a1 Ram Amrani        2016-10-10  1831  			       struct qedr_qp *qp,
> df15856132bc83 Amrani, Ram       2016-12-22  1832  			       struct ib_pd *ibpd,
> df15856132bc83 Amrani, Ram       2016-12-22  1833  			       struct ib_udata *udata,
> df15856132bc83 Amrani, Ram       2016-12-22  1834  			       struct ib_qp_init_attr *attrs)
> cecbcddf6461a1 Ram Amrani        2016-10-10  1835  {
> df15856132bc83 Amrani, Ram       2016-12-22  1836  	struct qed_rdma_create_qp_in_params in_params;
> df15856132bc83 Amrani, Ram       2016-12-22  1837  	struct qed_rdma_create_qp_out_params out_params;
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1838  	struct qedr_create_qp_uresp uresp = {};
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1839  	struct qedr_create_qp_ureq ureq = {};
> 69ad0e7fe8452a Kalderon, Michal  2017-07-26  1840  	int alloc_and_init = rdma_protocol_roce(&dev->ibdev, 1);
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1841  	struct qedr_ucontext *ctx = NULL;
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1842  	struct qedr_pd *pd = NULL;
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1843  	int rc = 0;
> cecbcddf6461a1 Ram Amrani        2016-10-10  1844  
> 82af6d19d8d922 Michal Kalderon   2019-10-27  1845  	qp->create_type = QEDR_QP_CREATE_USER;
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1846  
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1847  	if (ibpd) {
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1848  		pd = get_qedr_pd(ibpd);
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1849  		ctx = pd->uctx;
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1850  	}
> 
> "ctx" is NULL on the else path.

Looks like ibpd can never be NULL, so this is dead code

> 06e8d1df46ed52 Yuval Basson      2020-07-22  1851  
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1852  	if (udata) {

udata also can never be null because this is called 'qedr_create_user_qp' ?

It is confusingly called with a xrcd test too, but xrcd's are only
currently possible if udata is set.

> 06e8d1df46ed52 Yuval Basson      2020-07-22  1853  		rc = ib_copy_from_udata(&ureq, udata, min(sizeof(ureq),
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1854  					udata->inlen));
> df15856132bc83 Amrani, Ram       2016-12-22  1855  		if (rc) {
> df15856132bc83 Amrani, Ram       2016-12-22  1856  			DP_ERR(dev, "Problem copying data from user space\n");
> df15856132bc83 Amrani, Ram       2016-12-22  1857  			return rc;
> df15856132bc83 Amrani, Ram       2016-12-22  1858  		}
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1859  	}
> cecbcddf6461a1 Ram Amrani        2016-10-10  1860  
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1861  	if (qedr_qp_has_sq(qp)) {
> 72b894b09a96b7 Christoph Hellwig 2019-11-13  1862  		/* SQ - read access only (0) */
> b0ea0fa5435f9d Jason Gunthorpe   2019-01-09  1863  		rc = qedr_init_user_queue(udata, dev, &qp->usq, ureq.sq_addr,
> 72b894b09a96b7 Christoph Hellwig 2019-11-13  1864  					  ureq.sq_len, true, 0, alloc_and_init);
> df15856132bc83 Amrani, Ram       2016-12-22  1865  		if (rc)
> df15856132bc83 Amrani, Ram       2016-12-22  1866  			return rc;
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1867  	}
> cecbcddf6461a1 Ram Amrani        2016-10-10  1868  
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1869  	if (qedr_qp_has_rq(qp)) {
> 72b894b09a96b7 Christoph Hellwig 2019-11-13  1870  		/* RQ - read access only (0) */
> b0ea0fa5435f9d Jason Gunthorpe   2019-01-09  1871  		rc = qedr_init_user_queue(udata, dev, &qp->urq, ureq.rq_addr,
> 72b894b09a96b7 Christoph Hellwig 2019-11-13  1872  					  ureq.rq_len, true, 0, alloc_and_init);
> df15856132bc83 Amrani, Ram       2016-12-22  1873  		if (rc)
> df15856132bc83 Amrani, Ram       2016-12-22  1874  			return rc;
> 40b173ddce0fc6 Yuval Bason       2018-08-09  1875  	}
> df15856132bc83 Amrani, Ram       2016-12-22  1876  
> df15856132bc83 Amrani, Ram       2016-12-22  1877  	memset(&in_params, 0, sizeof(in_params));
> df15856132bc83 Amrani, Ram       2016-12-22  1878  	qedr_init_common_qp_in_params(dev, pd, qp, attrs, false, &in_params);
> df15856132bc83 Amrani, Ram       2016-12-22  1879  	in_params.qp_handle_lo = ureq.qp_handle_lo;
> df15856132bc83 Amrani, Ram       2016-12-22  1880  	in_params.qp_handle_hi = ureq.qp_handle_hi;
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1881  
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1882  	if (qp->qp_type == IB_QPT_XRC_TGT) {
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1883  		struct qedr_xrcd *xrcd = get_qedr_xrcd(attrs->xrcd);
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1884  
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1885  		in_params.xrcd_id = xrcd->xrcd_id;
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1886  		in_params.qp_handle_lo = qp->qp_id;
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1887  		in_params.use_srq = 1;
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1888  	}
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1889  
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1890  	if (qedr_qp_has_sq(qp)) {
> df15856132bc83 Amrani, Ram       2016-12-22  1891  		in_params.sq_num_pages = qp->usq.pbl_info.num_pbes;
> df15856132bc83 Amrani, Ram       2016-12-22  1892  		in_params.sq_pbl_ptr = qp->usq.pbl_tbl->pa;
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1893  	}
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1894  
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1895  	if (qedr_qp_has_rq(qp)) {
> df15856132bc83 Amrani, Ram       2016-12-22  1896  		in_params.rq_num_pages = qp->urq.pbl_info.num_pbes;
> df15856132bc83 Amrani, Ram       2016-12-22  1897  		in_params.rq_pbl_ptr = qp->urq.pbl_tbl->pa;
> 40b173ddce0fc6 Yuval Bason       2018-08-09  1898  	}
> df15856132bc83 Amrani, Ram       2016-12-22  1899  
> bbe4f4245271bd Michal Kalderon   2020-07-07 @1900  	if (ctx)
>                                                             ^^^
> Check for NULL
> 
> bbe4f4245271bd Michal Kalderon   2020-07-07  1901  		SET_FIELD(in_params.flags, QED_ROCE_EDPM_MODE, ctx->edpm_mode);
> bbe4f4245271bd Michal Kalderon   2020-07-07  1902  
> df15856132bc83 Amrani, Ram       2016-12-22  1903  	qp->qed_qp = dev->ops->rdma_create_qp(dev->rdma_ctx,
> df15856132bc83 Amrani, Ram       2016-12-22  1904  					      &in_params, &out_params);
> df15856132bc83 Amrani, Ram       2016-12-22  1905  
> df15856132bc83 Amrani, Ram       2016-12-22  1906  	if (!qp->qed_qp) {
> df15856132bc83 Amrani, Ram       2016-12-22  1907  		rc = -ENOMEM;
> df15856132bc83 Amrani, Ram       2016-12-22  1908  		goto err1;
> df15856132bc83 Amrani, Ram       2016-12-22  1909  	}
> df15856132bc83 Amrani, Ram       2016-12-22  1910  
> 69ad0e7fe8452a Kalderon, Michal  2017-07-26  1911  	if (rdma_protocol_iwarp(&dev->ibdev, 1))
> 69ad0e7fe8452a Kalderon, Michal  2017-07-26  1912  		qedr_iwarp_populate_user_qp(dev, qp, &out_params);
> 69ad0e7fe8452a Kalderon, Michal  2017-07-26  1913  
> df15856132bc83 Amrani, Ram       2016-12-22  1914  	qp->qp_id = out_params.qp_id;
> df15856132bc83 Amrani, Ram       2016-12-22  1915  	qp->icid = out_params.icid;
> df15856132bc83 Amrani, Ram       2016-12-22  1916  
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1917  	if (udata) {
> 97f612509294aa Michal Kalderon   2019-10-30  1918  		rc = qedr_copy_qp_uresp(dev, qp, udata, &uresp);
> 97f612509294aa Michal Kalderon   2019-10-30  1919  		if (rc)
> 97f612509294aa Michal Kalderon   2019-10-30  1920  			goto err;
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1921  	}
> 97f612509294aa Michal Kalderon   2019-10-30  1922  
> 97f612509294aa Michal Kalderon   2019-10-30  1923  	/* db offset was calculated in copy_qp_uresp, now set in the user q */
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1924  	if (qedr_qp_has_sq(qp)) {
> 97f612509294aa Michal Kalderon   2019-10-30 @1925  		qp->usq.db_addr = ctx->dpi_addr + uresp.sq_db_offset;
>                                                                                   ^^^^^^^^^^^^^
> Can "ctx" be NULL here?

This would also not work right if udata == NULL

Whole function needs cleaning, but doesn't look buggy

Jason

WARNING: multiple messages have this Message-ID (diff)
From: Jason Gunthorpe <jgg@nvidia.com>
To: Dan Carpenter <dan.carpenter@oracle.com>
Cc: <kbuild@lists.01.org>, Yuval Basson <ybason@marvell.com>,
	<lkp@intel.com>, <kbuild-all@lists.01.org>,
	<linux-kernel@vger.kernel.org>,
	Michal Kalderon <mkalderon@marvell.com>
Subject: Re: drivers/infiniband/hw/qedr/verbs.c:1925 qedr_create_user_qp() error: we previously assumed 'ctx' could be null (see line 1900)
Date: Tue, 16 Feb 2021 15:03:21 -0400	[thread overview]
Message-ID: <20210216190321.GG4247@nvidia.com> (raw)
In-Reply-To: <20210215133125.GP2087@kadam>

On Mon, Feb 15, 2021 at 04:31:25PM +0300, Dan Carpenter wrote:
> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> head:   dcc0b49040c70ad827a7f3d58a21b01fdb14e749
> commit: 06e8d1df46ed52eca6915a2a76341ca65cc428b9 RDMA/qedr: Add support for user mode XRC-SRQ's
> config: x86_64-randconfig-m001-20210213 (attached as .config)
> compiler: gcc-9 (Debian 9.3.0-15) 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:
> drivers/infiniband/hw/qedr/verbs.c:1925 qedr_create_user_qp() error: we previously assumed 'ctx' could be null (see line 1900)
> 
> vim +/ctx +1925 drivers/infiniband/hw/qedr/verbs.c
> 
> df15856132bc83 Amrani, Ram       2016-12-22  1830  static int qedr_create_user_qp(struct qedr_dev *dev,
> cecbcddf6461a1 Ram Amrani        2016-10-10  1831  			       struct qedr_qp *qp,
> df15856132bc83 Amrani, Ram       2016-12-22  1832  			       struct ib_pd *ibpd,
> df15856132bc83 Amrani, Ram       2016-12-22  1833  			       struct ib_udata *udata,
> df15856132bc83 Amrani, Ram       2016-12-22  1834  			       struct ib_qp_init_attr *attrs)
> cecbcddf6461a1 Ram Amrani        2016-10-10  1835  {
> df15856132bc83 Amrani, Ram       2016-12-22  1836  	struct qed_rdma_create_qp_in_params in_params;
> df15856132bc83 Amrani, Ram       2016-12-22  1837  	struct qed_rdma_create_qp_out_params out_params;
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1838  	struct qedr_create_qp_uresp uresp = {};
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1839  	struct qedr_create_qp_ureq ureq = {};
> 69ad0e7fe8452a Kalderon, Michal  2017-07-26  1840  	int alloc_and_init = rdma_protocol_roce(&dev->ibdev, 1);
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1841  	struct qedr_ucontext *ctx = NULL;
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1842  	struct qedr_pd *pd = NULL;
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1843  	int rc = 0;
> cecbcddf6461a1 Ram Amrani        2016-10-10  1844  
> 82af6d19d8d922 Michal Kalderon   2019-10-27  1845  	qp->create_type = QEDR_QP_CREATE_USER;
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1846  
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1847  	if (ibpd) {
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1848  		pd = get_qedr_pd(ibpd);
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1849  		ctx = pd->uctx;
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1850  	}
> 
> "ctx" is NULL on the else path.

Looks like ibpd can never be NULL, so this is dead code

> 06e8d1df46ed52 Yuval Basson      2020-07-22  1851  
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1852  	if (udata) {

udata also can never be null because this is called 'qedr_create_user_qp' ?

It is confusingly called with a xrcd test too, but xrcd's are only
currently possible if udata is set.

> 06e8d1df46ed52 Yuval Basson      2020-07-22  1853  		rc = ib_copy_from_udata(&ureq, udata, min(sizeof(ureq),
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1854  					udata->inlen));
> df15856132bc83 Amrani, Ram       2016-12-22  1855  		if (rc) {
> df15856132bc83 Amrani, Ram       2016-12-22  1856  			DP_ERR(dev, "Problem copying data from user space\n");
> df15856132bc83 Amrani, Ram       2016-12-22  1857  			return rc;
> df15856132bc83 Amrani, Ram       2016-12-22  1858  		}
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1859  	}
> cecbcddf6461a1 Ram Amrani        2016-10-10  1860  
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1861  	if (qedr_qp_has_sq(qp)) {
> 72b894b09a96b7 Christoph Hellwig 2019-11-13  1862  		/* SQ - read access only (0) */
> b0ea0fa5435f9d Jason Gunthorpe   2019-01-09  1863  		rc = qedr_init_user_queue(udata, dev, &qp->usq, ureq.sq_addr,
> 72b894b09a96b7 Christoph Hellwig 2019-11-13  1864  					  ureq.sq_len, true, 0, alloc_and_init);
> df15856132bc83 Amrani, Ram       2016-12-22  1865  		if (rc)
> df15856132bc83 Amrani, Ram       2016-12-22  1866  			return rc;
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1867  	}
> cecbcddf6461a1 Ram Amrani        2016-10-10  1868  
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1869  	if (qedr_qp_has_rq(qp)) {
> 72b894b09a96b7 Christoph Hellwig 2019-11-13  1870  		/* RQ - read access only (0) */
> b0ea0fa5435f9d Jason Gunthorpe   2019-01-09  1871  		rc = qedr_init_user_queue(udata, dev, &qp->urq, ureq.rq_addr,
> 72b894b09a96b7 Christoph Hellwig 2019-11-13  1872  					  ureq.rq_len, true, 0, alloc_and_init);
> df15856132bc83 Amrani, Ram       2016-12-22  1873  		if (rc)
> df15856132bc83 Amrani, Ram       2016-12-22  1874  			return rc;
> 40b173ddce0fc6 Yuval Bason       2018-08-09  1875  	}
> df15856132bc83 Amrani, Ram       2016-12-22  1876  
> df15856132bc83 Amrani, Ram       2016-12-22  1877  	memset(&in_params, 0, sizeof(in_params));
> df15856132bc83 Amrani, Ram       2016-12-22  1878  	qedr_init_common_qp_in_params(dev, pd, qp, attrs, false, &in_params);
> df15856132bc83 Amrani, Ram       2016-12-22  1879  	in_params.qp_handle_lo = ureq.qp_handle_lo;
> df15856132bc83 Amrani, Ram       2016-12-22  1880  	in_params.qp_handle_hi = ureq.qp_handle_hi;
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1881  
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1882  	if (qp->qp_type == IB_QPT_XRC_TGT) {
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1883  		struct qedr_xrcd *xrcd = get_qedr_xrcd(attrs->xrcd);
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1884  
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1885  		in_params.xrcd_id = xrcd->xrcd_id;
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1886  		in_params.qp_handle_lo = qp->qp_id;
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1887  		in_params.use_srq = 1;
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1888  	}
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1889  
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1890  	if (qedr_qp_has_sq(qp)) {
> df15856132bc83 Amrani, Ram       2016-12-22  1891  		in_params.sq_num_pages = qp->usq.pbl_info.num_pbes;
> df15856132bc83 Amrani, Ram       2016-12-22  1892  		in_params.sq_pbl_ptr = qp->usq.pbl_tbl->pa;
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1893  	}
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1894  
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1895  	if (qedr_qp_has_rq(qp)) {
> df15856132bc83 Amrani, Ram       2016-12-22  1896  		in_params.rq_num_pages = qp->urq.pbl_info.num_pbes;
> df15856132bc83 Amrani, Ram       2016-12-22  1897  		in_params.rq_pbl_ptr = qp->urq.pbl_tbl->pa;
> 40b173ddce0fc6 Yuval Bason       2018-08-09  1898  	}
> df15856132bc83 Amrani, Ram       2016-12-22  1899  
> bbe4f4245271bd Michal Kalderon   2020-07-07 @1900  	if (ctx)
>                                                             ^^^
> Check for NULL
> 
> bbe4f4245271bd Michal Kalderon   2020-07-07  1901  		SET_FIELD(in_params.flags, QED_ROCE_EDPM_MODE, ctx->edpm_mode);
> bbe4f4245271bd Michal Kalderon   2020-07-07  1902  
> df15856132bc83 Amrani, Ram       2016-12-22  1903  	qp->qed_qp = dev->ops->rdma_create_qp(dev->rdma_ctx,
> df15856132bc83 Amrani, Ram       2016-12-22  1904  					      &in_params, &out_params);
> df15856132bc83 Amrani, Ram       2016-12-22  1905  
> df15856132bc83 Amrani, Ram       2016-12-22  1906  	if (!qp->qed_qp) {
> df15856132bc83 Amrani, Ram       2016-12-22  1907  		rc = -ENOMEM;
> df15856132bc83 Amrani, Ram       2016-12-22  1908  		goto err1;
> df15856132bc83 Amrani, Ram       2016-12-22  1909  	}
> df15856132bc83 Amrani, Ram       2016-12-22  1910  
> 69ad0e7fe8452a Kalderon, Michal  2017-07-26  1911  	if (rdma_protocol_iwarp(&dev->ibdev, 1))
> 69ad0e7fe8452a Kalderon, Michal  2017-07-26  1912  		qedr_iwarp_populate_user_qp(dev, qp, &out_params);
> 69ad0e7fe8452a Kalderon, Michal  2017-07-26  1913  
> df15856132bc83 Amrani, Ram       2016-12-22  1914  	qp->qp_id = out_params.qp_id;
> df15856132bc83 Amrani, Ram       2016-12-22  1915  	qp->icid = out_params.icid;
> df15856132bc83 Amrani, Ram       2016-12-22  1916  
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1917  	if (udata) {
> 97f612509294aa Michal Kalderon   2019-10-30  1918  		rc = qedr_copy_qp_uresp(dev, qp, udata, &uresp);
> 97f612509294aa Michal Kalderon   2019-10-30  1919  		if (rc)
> 97f612509294aa Michal Kalderon   2019-10-30  1920  			goto err;
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1921  	}
> 97f612509294aa Michal Kalderon   2019-10-30  1922  
> 97f612509294aa Michal Kalderon   2019-10-30  1923  	/* db offset was calculated in copy_qp_uresp, now set in the user q */
> 06e8d1df46ed52 Yuval Basson      2020-07-22  1924  	if (qedr_qp_has_sq(qp)) {
> 97f612509294aa Michal Kalderon   2019-10-30 @1925  		qp->usq.db_addr = ctx->dpi_addr + uresp.sq_db_offset;
>                                                                                   ^^^^^^^^^^^^^
> Can "ctx" be NULL here?

This would also not work right if udata == NULL

Whole function needs cleaning, but doesn't look buggy

Jason

  reply	other threads:[~2021-02-16 19:03 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-15 13:31 drivers/infiniband/hw/qedr/verbs.c:1925 qedr_create_user_qp() error: we previously assumed 'ctx' could be null (see line 1900) Dan Carpenter
2021-02-15 13:31 ` Dan Carpenter
2021-02-15 13:31 ` Dan Carpenter
2021-02-16 19:03 ` Jason Gunthorpe [this message]
2021-02-16 19:03   ` Jason Gunthorpe
2021-02-18 12:49   ` [EXT] " Michal Kalderon
2021-02-18 12:49     ` Michal Kalderon
  -- strict thread matches above, loose matches on Subject: below --
2021-02-13 21:22 kernel test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210216190321.GG4247@nvidia.com \
    --to=jgg@nvidia.com \
    --cc=kbuild-all@lists.01.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.