* [bug report] RDMA/mana_ib: Add a driver for Microsoft Azure Network Adapter
@ 2022-10-10 10:55 Dan Carpenter
2022-10-10 19:38 ` Long Li
0 siblings, 1 reply; 4+ messages in thread
From: Dan Carpenter @ 2022-10-10 10:55 UTC (permalink / raw)
To: longli; +Cc: linux-hyperv
Hello Long Li,
The patch 6dce3468a04c: "RDMA/mana_ib: Add a driver for Microsoft
Azure Network Adapter" from Sep 20, 2022, leads to the following
Smatch static checker warning:
drivers/infiniband/hw/mana/qp.c:240 mana_ib_create_qp_rss()
warn: 'mana_ind_table' was already freed.
drivers/infiniband/hw/mana/qp.c
91 static int mana_ib_create_qp_rss(struct ib_qp *ibqp, struct ib_pd *pd,
92 struct ib_qp_init_attr *attr,
93 struct ib_udata *udata)
94 {
95 struct mana_ib_qp *qp = container_of(ibqp, struct mana_ib_qp, ibqp);
96 struct mana_ib_dev *mdev =
97 container_of(pd->device, struct mana_ib_dev, ib_dev);
98 struct ib_rwq_ind_table *ind_tbl = attr->rwq_ind_tbl;
99 struct mana_ib_create_qp_rss_resp resp = {};
100 struct mana_ib_create_qp_rss ucmd = {};
101 struct gdma_dev *gd = mdev->gdma_dev;
102 mana_handle_t *mana_ind_table;
103 struct mana_port_context *mpc;
104 struct mana_context *mc;
105 struct net_device *ndev;
106 struct mana_ib_cq *cq;
107 struct mana_ib_wq *wq;
108 struct ib_cq *ibcq;
109 struct ib_wq *ibwq;
110 int i = 0, ret;
111 u32 port;
112
113 mc = gd->driver_data;
114
115 if (udata->inlen < sizeof(ucmd))
116 return -EINVAL;
117
118 ret = ib_copy_from_udata(&ucmd, udata, min(sizeof(ucmd), udata->inlen));
119 if (ret) {
120 ibdev_dbg(&mdev->ib_dev,
121 "Failed copy from udata for create rss-qp, err %d\n",
122 ret);
123 return -EFAULT;
124 }
125
126 if (attr->cap.max_recv_wr > MAX_SEND_BUFFERS_PER_QUEUE) {
127 ibdev_dbg(&mdev->ib_dev,
128 "Requested max_recv_wr %d exceeding limit.\n",
129 attr->cap.max_recv_wr);
130 return -EINVAL;
131 }
132
133 if (attr->cap.max_recv_sge > MAX_RX_WQE_SGL_ENTRIES) {
134 ibdev_dbg(&mdev->ib_dev,
135 "Requested max_recv_sge %d exceeding limit.\n",
136 attr->cap.max_recv_sge);
137 return -EINVAL;
138 }
139
140 if (ucmd.rx_hash_function != MANA_IB_RX_HASH_FUNC_TOEPLITZ) {
141 ibdev_dbg(&mdev->ib_dev,
142 "RX Hash function is not supported, %d\n",
143 ucmd.rx_hash_function);
144 return -EINVAL;
145 }
146
147 /* IB ports start with 1, MANA start with 0 */
148 port = ucmd.port;
149 if (port < 1 || port > mc->num_ports) {
150 ibdev_dbg(&mdev->ib_dev, "Invalid port %u in creating qp\n",
151 port);
152 return -EINVAL;
153 }
154 ndev = mc->ports[port - 1];
155 mpc = netdev_priv(ndev);
156
157 ibdev_dbg(&mdev->ib_dev, "rx_hash_function %d port %d\n",
158 ucmd.rx_hash_function, port);
159
160 mana_ind_table = kzalloc(sizeof(mana_handle_t) *
161 (1 << ind_tbl->log_ind_tbl_size),
162 GFP_KERNEL);
163 if (!mana_ind_table) {
164 ret = -ENOMEM;
165 goto fail;
166 }
167
168 qp->port = port;
169
170 for (i = 0; i < (1 << ind_tbl->log_ind_tbl_size); i++) {
171 struct mana_obj_spec wq_spec = {};
172 struct mana_obj_spec cq_spec = {};
173
174 ibwq = ind_tbl->ind_tbl[i];
175 wq = container_of(ibwq, struct mana_ib_wq, ibwq);
176
177 ibcq = ibwq->cq;
178 cq = container_of(ibcq, struct mana_ib_cq, ibcq);
179
180 wq_spec.gdma_region = wq->gdma_region;
181 wq_spec.queue_size = wq->wq_buf_size;
182
183 cq_spec.gdma_region = cq->gdma_region;
184 cq_spec.queue_size = cq->cqe * COMP_ENTRY_SIZE;
185 cq_spec.modr_ctx_id = 0;
186 cq_spec.attached_eq = GDMA_CQ_NO_EQ;
187
188 ret = mana_create_wq_obj(mpc, mpc->port_handle, GDMA_RQ,
189 &wq_spec, &cq_spec, &wq->rx_object);
190 if (ret)
191 goto fail;
192
193 /* The GDMA regions are now owned by the WQ object */
194 wq->gdma_region = GDMA_INVALID_DMA_REGION;
195 cq->gdma_region = GDMA_INVALID_DMA_REGION;
196
197 wq->id = wq_spec.queue_index;
198 cq->id = cq_spec.queue_index;
199
200 ibdev_dbg(&mdev->ib_dev,
201 "ret %d rx_object 0x%llx wq id %llu cq id %llu\n",
202 ret, wq->rx_object, wq->id, cq->id);
203
204 resp.entries[i].cqid = cq->id;
205 resp.entries[i].wqid = wq->id;
206
207 mana_ind_table[i] = wq->rx_object;
208 }
209 resp.num_entries = i;
210
211 ret = mana_ib_cfg_vport_steering(mdev, ndev, wq->rx_object,
212 mana_ind_table,
213 ind_tbl->log_ind_tbl_size,
214 ucmd.rx_hash_key_len,
215 ucmd.rx_hash_key);
216 if (ret)
217 goto fail;
218
219 kfree(mana_ind_table);
Freed here.
220
221 if (udata) {
222 ret = ib_copy_to_udata(udata, &resp, sizeof(resp));
223 if (ret) {
224 ibdev_dbg(&mdev->ib_dev,
225 "Failed to copy to udata create rss-qp, %d\n",
226 ret);
227 goto fail;
Goto.
228 }
229 }
230
231 return 0;
232
233 fail:
234 while (i-- > 0) {
235 ibwq = ind_tbl->ind_tbl[i];
236 wq = container_of(ibwq, struct mana_ib_wq, ibwq);
237 mana_destroy_wq_obj(mpc, GDMA_RQ, wq->rx_object);
238 }
239
--> 240 kfree(mana_ind_table);
Double freed.
241
242 return ret;
243 }
regards,
dan carpenter
^ permalink raw reply [flat|nested] 4+ messages in thread
* RE: [bug report] RDMA/mana_ib: Add a driver for Microsoft Azure Network Adapter
2022-10-10 10:55 [bug report] RDMA/mana_ib: Add a driver for Microsoft Azure Network Adapter Dan Carpenter
@ 2022-10-10 19:38 ` Long Li
0 siblings, 0 replies; 4+ messages in thread
From: Long Li @ 2022-10-10 19:38 UTC (permalink / raw)
To: Dan Carpenter; +Cc: linux-hyperv@vger.kernel.org
> Subject: [bug report] RDMA/mana_ib: Add a driver for Microsoft Azure
> Network Adapter
>
> Hello Long Li,
>
> The patch 6dce3468a04c: "RDMA/mana_ib: Add a driver for Microsoft Azure
> Network Adapter" from Sep 20, 2022, leads to the following Smatch static
> checker warning:
>
> drivers/infiniband/hw/mana/qp.c:240 mana_ib_create_qp_rss()
> warn: 'mana_ind_table' was already freed.
>
> drivers/infiniband/hw/mana/qp.c
> 91 static int mana_ib_create_qp_rss(struct ib_qp *ibqp, struct ib_pd *pd,
> 92 struct ib_qp_init_attr *attr,
> 93 struct ib_udata *udata)
> 94 {
> 95 struct mana_ib_qp *qp = container_of(ibqp, struct mana_ib_qp,
> ibqp);
> 96 struct mana_ib_dev *mdev =
> 97 container_of(pd->device, struct mana_ib_dev, ib_dev);
> 98 struct ib_rwq_ind_table *ind_tbl = attr->rwq_ind_tbl;
> 99 struct mana_ib_create_qp_rss_resp resp = {};
> 100 struct mana_ib_create_qp_rss ucmd = {};
> 101 struct gdma_dev *gd = mdev->gdma_dev;
> 102 mana_handle_t *mana_ind_table;
> 103 struct mana_port_context *mpc;
> 104 struct mana_context *mc;
> 105 struct net_device *ndev;
> 106 struct mana_ib_cq *cq;
> 107 struct mana_ib_wq *wq;
> 108 struct ib_cq *ibcq;
> 109 struct ib_wq *ibwq;
> 110 int i = 0, ret;
> 111 u32 port;
> 112
> 113 mc = gd->driver_data;
> 114
> 115 if (udata->inlen < sizeof(ucmd))
> 116 return -EINVAL;
> 117
> 118 ret = ib_copy_from_udata(&ucmd, udata, min(sizeof(ucmd),
> udata->inlen));
> 119 if (ret) {
> 120 ibdev_dbg(&mdev->ib_dev,
> 121 "Failed copy from udata for create rss-qp, err %d\n",
> 122 ret);
> 123 return -EFAULT;
> 124 }
> 125
> 126 if (attr->cap.max_recv_wr > MAX_SEND_BUFFERS_PER_QUEUE) {
> 127 ibdev_dbg(&mdev->ib_dev,
> 128 "Requested max_recv_wr %d exceeding limit.\n",
> 129 attr->cap.max_recv_wr);
> 130 return -EINVAL;
> 131 }
> 132
> 133 if (attr->cap.max_recv_sge > MAX_RX_WQE_SGL_ENTRIES) {
> 134 ibdev_dbg(&mdev->ib_dev,
> 135 "Requested max_recv_sge %d exceeding limit.\n",
> 136 attr->cap.max_recv_sge);
> 137 return -EINVAL;
> 138 }
> 139
> 140 if (ucmd.rx_hash_function !=
> MANA_IB_RX_HASH_FUNC_TOEPLITZ) {
> 141 ibdev_dbg(&mdev->ib_dev,
> 142 "RX Hash function is not supported, %d\n",
> 143 ucmd.rx_hash_function);
> 144 return -EINVAL;
> 145 }
> 146
> 147 /* IB ports start with 1, MANA start with 0 */
> 148 port = ucmd.port;
> 149 if (port < 1 || port > mc->num_ports) {
> 150 ibdev_dbg(&mdev->ib_dev, "Invalid port %u in creating qp\n",
> 151 port);
> 152 return -EINVAL;
> 153 }
> 154 ndev = mc->ports[port - 1];
> 155 mpc = netdev_priv(ndev);
> 156
> 157 ibdev_dbg(&mdev->ib_dev, "rx_hash_function %d port %d\n",
> 158 ucmd.rx_hash_function, port);
> 159
> 160 mana_ind_table = kzalloc(sizeof(mana_handle_t) *
> 161 (1 << ind_tbl->log_ind_tbl_size),
> 162 GFP_KERNEL);
> 163 if (!mana_ind_table) {
> 164 ret = -ENOMEM;
> 165 goto fail;
> 166 }
> 167
> 168 qp->port = port;
> 169
> 170 for (i = 0; i < (1 << ind_tbl->log_ind_tbl_size); i++) {
> 171 struct mana_obj_spec wq_spec = {};
> 172 struct mana_obj_spec cq_spec = {};
> 173
> 174 ibwq = ind_tbl->ind_tbl[i];
> 175 wq = container_of(ibwq, struct mana_ib_wq, ibwq);
> 176
> 177 ibcq = ibwq->cq;
> 178 cq = container_of(ibcq, struct mana_ib_cq, ibcq);
> 179
> 180 wq_spec.gdma_region = wq->gdma_region;
> 181 wq_spec.queue_size = wq->wq_buf_size;
> 182
> 183 cq_spec.gdma_region = cq->gdma_region;
> 184 cq_spec.queue_size = cq->cqe * COMP_ENTRY_SIZE;
> 185 cq_spec.modr_ctx_id = 0;
> 186 cq_spec.attached_eq = GDMA_CQ_NO_EQ;
> 187
> 188 ret = mana_create_wq_obj(mpc, mpc->port_handle,
> GDMA_RQ,
> 189 &wq_spec, &cq_spec, &wq->rx_object);
> 190 if (ret)
> 191 goto fail;
> 192
> 193 /* The GDMA regions are now owned by the WQ object */
> 194 wq->gdma_region = GDMA_INVALID_DMA_REGION;
> 195 cq->gdma_region = GDMA_INVALID_DMA_REGION;
> 196
> 197 wq->id = wq_spec.queue_index;
> 198 cq->id = cq_spec.queue_index;
> 199
> 200 ibdev_dbg(&mdev->ib_dev,
> 201 "ret %d rx_object 0x%llx wq id %llu cq id %llu\n",
> 202 ret, wq->rx_object, wq->id, cq->id);
> 203
> 204 resp.entries[i].cqid = cq->id;
> 205 resp.entries[i].wqid = wq->id;
> 206
> 207 mana_ind_table[i] = wq->rx_object;
> 208 }
> 209 resp.num_entries = i;
> 210
> 211 ret = mana_ib_cfg_vport_steering(mdev, ndev, wq->rx_object,
> 212 mana_ind_table,
> 213 ind_tbl->log_ind_tbl_size,
> 214 ucmd.rx_hash_key_len,
> 215 ucmd.rx_hash_key);
> 216 if (ret)
> 217 goto fail;
> 218
> 219 kfree(mana_ind_table);
>
> Freed here.
>
> 220
> 221 if (udata) {
> 222 ret = ib_copy_to_udata(udata, &resp, sizeof(resp));
> 223 if (ret) {
> 224 ibdev_dbg(&mdev->ib_dev,
> 225 "Failed to copy to udata create rss-qp, %d\n",
> 226 ret);
> 227 goto fail;
>
> Goto.
>
> 228 }
> 229 }
> 230
> 231 return 0;
> 232
> 233 fail:
> 234 while (i-- > 0) {
> 235 ibwq = ind_tbl->ind_tbl[i];
> 236 wq = container_of(ibwq, struct mana_ib_wq, ibwq);
> 237 mana_destroy_wq_obj(mpc, GDMA_RQ, wq->rx_object);
> 238 }
> 239
> --> 240 kfree(mana_ind_table);
>
> Double freed.
>
> 241
> 242 return ret;
> 243 }
>
> regards,
> dan carpenter
Thank you, will fix this.
Long
^ permalink raw reply [flat|nested] 4+ messages in thread
* [bug report] RDMA/mana_ib: Add a driver for Microsoft Azure Network Adapter
@ 2022-10-12 11:55 Dan Carpenter
2022-10-12 19:28 ` Long Li
0 siblings, 1 reply; 4+ messages in thread
From: Dan Carpenter @ 2022-10-12 11:55 UTC (permalink / raw)
To: longli; +Cc: linux-hyperv
Hello Long Li,
This is a semi-automatic email about new static checker warnings.
The patch 6dce3468a04c: "RDMA/mana_ib: Add a driver for Microsoft
Azure Network Adapter" from Sep 20, 2022, leads to the following
Smatch complaint:
drivers/infiniband/hw/mana/qp.c:221 mana_ib_create_qp_rss()
warn: variable dereferenced before check 'udata' (see line 115)
drivers/infiniband/hw/mana/qp.c
114
115 if (udata->inlen < sizeof(ucmd))
^^^^^^^^^^^^
This code assumes "udata" is non-NULL
116 return -EINVAL;
117
118 ret = ib_copy_from_udata(&ucmd, udata, min(sizeof(ucmd), udata->inlen));
119 if (ret) {
120 ibdev_dbg(&mdev->ib_dev,
121 "Failed copy from udata for create rss-qp, err %d\n",
122 ret);
123 return -EFAULT;
124 }
125
126 if (attr->cap.max_recv_wr > MAX_SEND_BUFFERS_PER_QUEUE) {
127 ibdev_dbg(&mdev->ib_dev,
128 "Requested max_recv_wr %d exceeding limit.\n",
129 attr->cap.max_recv_wr);
130 return -EINVAL;
131 }
132
133 if (attr->cap.max_recv_sge > MAX_RX_WQE_SGL_ENTRIES) {
134 ibdev_dbg(&mdev->ib_dev,
135 "Requested max_recv_sge %d exceeding limit.\n",
136 attr->cap.max_recv_sge);
137 return -EINVAL;
138 }
139
140 if (ucmd.rx_hash_function != MANA_IB_RX_HASH_FUNC_TOEPLITZ) {
141 ibdev_dbg(&mdev->ib_dev,
142 "RX Hash function is not supported, %d\n",
143 ucmd.rx_hash_function);
144 return -EINVAL;
145 }
146
147 /* IB ports start with 1, MANA start with 0 */
148 port = ucmd.port;
149 if (port < 1 || port > mc->num_ports) {
150 ibdev_dbg(&mdev->ib_dev, "Invalid port %u in creating qp\n",
151 port);
152 return -EINVAL;
153 }
154 ndev = mc->ports[port - 1];
155 mpc = netdev_priv(ndev);
156
157 ibdev_dbg(&mdev->ib_dev, "rx_hash_function %d port %d\n",
158 ucmd.rx_hash_function, port);
159
160 mana_ind_table = kzalloc(sizeof(mana_handle_t) *
161 (1 << ind_tbl->log_ind_tbl_size),
162 GFP_KERNEL);
163 if (!mana_ind_table) {
164 ret = -ENOMEM;
165 goto fail;
166 }
167
168 qp->port = port;
169
170 for (i = 0; i < (1 << ind_tbl->log_ind_tbl_size); i++) {
171 struct mana_obj_spec wq_spec = {};
172 struct mana_obj_spec cq_spec = {};
173
174 ibwq = ind_tbl->ind_tbl[i];
175 wq = container_of(ibwq, struct mana_ib_wq, ibwq);
176
177 ibcq = ibwq->cq;
178 cq = container_of(ibcq, struct mana_ib_cq, ibcq);
179
180 wq_spec.gdma_region = wq->gdma_region;
181 wq_spec.queue_size = wq->wq_buf_size;
182
183 cq_spec.gdma_region = cq->gdma_region;
184 cq_spec.queue_size = cq->cqe * COMP_ENTRY_SIZE;
185 cq_spec.modr_ctx_id = 0;
186 cq_spec.attached_eq = GDMA_CQ_NO_EQ;
187
188 ret = mana_create_wq_obj(mpc, mpc->port_handle, GDMA_RQ,
189 &wq_spec, &cq_spec, &wq->rx_object);
190 if (ret)
191 goto fail;
192
193 /* The GDMA regions are now owned by the WQ object */
194 wq->gdma_region = GDMA_INVALID_DMA_REGION;
195 cq->gdma_region = GDMA_INVALID_DMA_REGION;
196
197 wq->id = wq_spec.queue_index;
198 cq->id = cq_spec.queue_index;
199
200 ibdev_dbg(&mdev->ib_dev,
201 "ret %d rx_object 0x%llx wq id %llu cq id %llu\n",
202 ret, wq->rx_object, wq->id, cq->id);
203
204 resp.entries[i].cqid = cq->id;
205 resp.entries[i].wqid = wq->id;
206
207 mana_ind_table[i] = wq->rx_object;
208 }
209 resp.num_entries = i;
210
211 ret = mana_ib_cfg_vport_steering(mdev, ndev, wq->rx_object,
212 mana_ind_table,
213 ind_tbl->log_ind_tbl_size,
214 ucmd.rx_hash_key_len,
215 ucmd.rx_hash_key);
216 if (ret)
217 goto fail;
218
219 kfree(mana_ind_table);
220
221 if (udata) {
^^^^^
Can it be NULL?
222 ret = ib_copy_to_udata(udata, &resp, sizeof(resp));
223 if (ret) {
regards,
dan carpenter
^ permalink raw reply [flat|nested] 4+ messages in thread
* RE: [bug report] RDMA/mana_ib: Add a driver for Microsoft Azure Network Adapter
2022-10-12 11:55 Dan Carpenter
@ 2022-10-12 19:28 ` Long Li
0 siblings, 0 replies; 4+ messages in thread
From: Long Li @ 2022-10-12 19:28 UTC (permalink / raw)
To: Dan Carpenter; +Cc: linux-hyperv@vger.kernel.org
> Subject: [bug report] RDMA/mana_ib: Add a driver for Microsoft Azure
> Network Adapter
>
> Hello Long Li,
>
> This is a semi-automatic email about new static checker warnings.
>
> The patch 6dce3468a04c: "RDMA/mana_ib: Add a driver for Microsoft Azure
> Network Adapter" from Sep 20, 2022, leads to the following Smatch
> complaint:
>
> drivers/infiniband/hw/mana/qp.c:221 mana_ib_create_qp_rss()
> warn: variable dereferenced before check 'udata' (see line 115)
Thank you, will fix this.
Long
>
> drivers/infiniband/hw/mana/qp.c
> 114
> 115 if (udata->inlen < sizeof(ucmd))
> ^^^^^^^^^^^^
> This code assumes "udata" is non-NULL
>
> 116 return -EINVAL;
> 117
> 118 ret = ib_copy_from_udata(&ucmd, udata, min(sizeof(ucmd),
> udata->inlen));
> 119 if (ret) {
> 120 ibdev_dbg(&mdev->ib_dev,
> 121 "Failed copy from udata for create rss-qp,
> err %d\n",
> 122 ret);
> 123 return -EFAULT;
> 124 }
> 125
> 126 if (attr->cap.max_recv_wr >
> MAX_SEND_BUFFERS_PER_QUEUE) {
> 127 ibdev_dbg(&mdev->ib_dev,
> 128 "Requested max_recv_wr %d exceeding
> limit.\n",
> 129 attr->cap.max_recv_wr);
> 130 return -EINVAL;
> 131 }
> 132
> 133 if (attr->cap.max_recv_sge > MAX_RX_WQE_SGL_ENTRIES) {
> 134 ibdev_dbg(&mdev->ib_dev,
> 135 "Requested max_recv_sge %d exceeding
> limit.\n",
> 136 attr->cap.max_recv_sge);
> 137 return -EINVAL;
> 138 }
> 139
> 140 if (ucmd.rx_hash_function !=
> MANA_IB_RX_HASH_FUNC_TOEPLITZ) {
> 141 ibdev_dbg(&mdev->ib_dev,
> 142 "RX Hash function is not supported, %d\n",
> 143 ucmd.rx_hash_function);
> 144 return -EINVAL;
> 145 }
> 146
> 147 /* IB ports start with 1, MANA start with 0 */
> 148 port = ucmd.port;
> 149 if (port < 1 || port > mc->num_ports) {
> 150 ibdev_dbg(&mdev->ib_dev, "Invalid port %u in
> creating qp\n",
> 151 port);
> 152 return -EINVAL;
> 153 }
> 154 ndev = mc->ports[port - 1];
> 155 mpc = netdev_priv(ndev);
> 156
> 157 ibdev_dbg(&mdev->ib_dev, "rx_hash_function %d
> port %d\n",
> 158 ucmd.rx_hash_function, port);
> 159
> 160 mana_ind_table = kzalloc(sizeof(mana_handle_t) *
> 161 (1 << ind_tbl-
> >log_ind_tbl_size),
> 162 GFP_KERNEL);
> 163 if (!mana_ind_table) {
> 164 ret = -ENOMEM;
> 165 goto fail;
> 166 }
> 167
> 168 qp->port = port;
> 169
> 170 for (i = 0; i < (1 << ind_tbl->log_ind_tbl_size); i++) {
> 171 struct mana_obj_spec wq_spec = {};
> 172 struct mana_obj_spec cq_spec = {};
> 173
> 174 ibwq = ind_tbl->ind_tbl[i];
> 175 wq = container_of(ibwq, struct mana_ib_wq, ibwq);
> 176
> 177 ibcq = ibwq->cq;
> 178 cq = container_of(ibcq, struct mana_ib_cq, ibcq);
> 179
> 180 wq_spec.gdma_region = wq->gdma_region;
> 181 wq_spec.queue_size = wq->wq_buf_size;
> 182
> 183 cq_spec.gdma_region = cq->gdma_region;
> 184 cq_spec.queue_size = cq->cqe * COMP_ENTRY_SIZE;
> 185 cq_spec.modr_ctx_id = 0;
> 186 cq_spec.attached_eq = GDMA_CQ_NO_EQ;
> 187
> 188 ret = mana_create_wq_obj(mpc, mpc->port_handle,
> GDMA_RQ,
> 189 &wq_spec, &cq_spec, &wq-
> >rx_object);
> 190 if (ret)
> 191 goto fail;
> 192
> 193 /* The GDMA regions are now owned by the WQ
> object */
> 194 wq->gdma_region = GDMA_INVALID_DMA_REGION;
> 195 cq->gdma_region = GDMA_INVALID_DMA_REGION;
> 196
> 197 wq->id = wq_spec.queue_index;
> 198 cq->id = cq_spec.queue_index;
> 199
> 200 ibdev_dbg(&mdev->ib_dev,
> 201 "ret %d rx_object 0x%llx wq id %llu cq
> id %llu\n",
> 202 ret, wq->rx_object, wq->id, cq->id);
> 203
> 204 resp.entries[i].cqid = cq->id;
> 205 resp.entries[i].wqid = wq->id;
> 206
> 207 mana_ind_table[i] = wq->rx_object;
> 208 }
> 209 resp.num_entries = i;
> 210
> 211 ret = mana_ib_cfg_vport_steering(mdev, ndev, wq-
> >rx_object,
> 212 mana_ind_table,
> 213 ind_tbl->log_ind_tbl_size,
> 214 ucmd.rx_hash_key_len,
> 215 ucmd.rx_hash_key);
> 216 if (ret)
> 217 goto fail;
> 218
> 219 kfree(mana_ind_table);
> 220
> 221 if (udata) {
> ^^^^^
> Can it be NULL?
>
> 222 ret = ib_copy_to_udata(udata, &resp, sizeof(resp));
> 223 if (ret) {
>
> regards,
> dan carpenter
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2022-10-12 19:28 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-10-10 10:55 [bug report] RDMA/mana_ib: Add a driver for Microsoft Azure Network Adapter Dan Carpenter
2022-10-10 19:38 ` Long Li
-- strict thread matches above, loose matches on Subject: below --
2022-10-12 11:55 Dan Carpenter
2022-10-12 19:28 ` Long Li
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).