* re: mlx5: Add driver for Mellanox Connect-IB adapters
@ 2014-06-20 17:58 Dan Carpenter
2014-06-26 10:37 ` Eli Cohen
0 siblings, 1 reply; 8+ messages in thread
From: Dan Carpenter @ 2014-06-20 17:58 UTC (permalink / raw)
To: eli-VPRAkNaXOzVWk0Htik3J/w; +Cc: linux-rdma-u79uwXL29TY76Z2rM5mHXA
Hello Eli Cohen,
This is a semi-automatic email about new static checker warnings.
The patch e126ba97dba9: "mlx5: Add driver for Mellanox Connect-IB
adapters" from Jul 7, 2013, leads to the following Smatch complaint:
drivers/infiniband/hw/mlx5/qp.c:979 create_qp_common()
error: we previously assumed 'pd->uobject' could be null (see line 847)
drivers/infiniband/hw/mlx5/qp.c
846 if (pd) {
847 if (pd->uobject) {
^^^^^^^^^^^
There are a bunch of checks for pd->uobject.
848 mlx5_ib_dbg(dev, "requested sq_wqe_count (%d)\n", ucmd.sq_wqe_count);
849 if (ucmd.rq_wqe_shift != qp->rq.wqe_shift ||
850 ucmd.rq_wqe_count != qp->rq.wqe_cnt) {
851 mlx5_ib_dbg(dev, "invalid rq params\n");
852 return -EINVAL;
853 }
854 if (ucmd.sq_wqe_count > dev->mdev.caps.max_wqes) {
855 mlx5_ib_dbg(dev, "requested sq_wqe_count (%d) > max allowed (%d)\n",
[ snip ]
971 qp->doorbell_qpn = swab32(qp->mqp.qpn << 8);
972
973 qp->mqp.event = mlx5_ib_qp_event;
974
975 return 0;
976
977 err_create:
978 if (qp->create_type == MLX5_QP_USER)
979 destroy_qp_user(pd, qp);
^^^^^^^^^^^^^^^
But we dereference it inside destroy_qp_user() unconditionally.
980 else if (qp->create_type == MLX5_QP_KERNEL)
981 destroy_qp_kernel(dev, qp);
regards,
dan carpenter
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: mlx5: Add driver for Mellanox Connect-IB adapters 2014-06-20 17:58 mlx5: Add driver for Mellanox Connect-IB adapters Dan Carpenter @ 2014-06-26 10:37 ` Eli Cohen 0 siblings, 0 replies; 8+ messages in thread From: Eli Cohen @ 2014-06-26 10:37 UTC (permalink / raw) To: Dan Carpenter Cc: eli-VPRAkNaXOzVWk0Htik3J/w, linux-rdma-u79uwXL29TY76Z2rM5mHXA On Fri, Jun 20, 2014 at 08:58:32PM +0300, Dan Carpenter wrote: > 976 > 977 err_create: > 978 if (qp->create_type == MLX5_QP_USER) > 979 destroy_qp_user(pd, qp); > ^^^^^^^^^^^^^^^ > But we dereference it inside destroy_qp_user() unconditionally. > > 980 else if (qp->create_type == MLX5_QP_KERNEL) > 981 destroy_qp_kernel(dev, qp); > When we get here we already updated create_type and since all MLX5_QP_USER type QPs have PD the logic is not broken. -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 8+ messages in thread
* re: mlx5: Add driver for Mellanox Connect-IB adapters
@ 2013-07-10 10:55 Dan Carpenter
[not found] ` <20130710105538.GB31232-dZEljifmRObu9KfB+GxooP8+0UxHXcjY@public.gmane.org>
0 siblings, 1 reply; 8+ messages in thread
From: Dan Carpenter @ 2013-07-10 10:55 UTC (permalink / raw)
To: eli-VPRAkNaXOzVWk0Htik3J/w; +Cc: linux-rdma-u79uwXL29TY76Z2rM5mHXA
Hello Eli Cohen,
The patch e126ba97dba9: "mlx5: Add driver for Mellanox Connect-IB
adapters" from Jul 7, 2013, leads to the following Smatch warning:
"drivers/net/ethernet/mellanox/mlx5/core/cmd.c:822
mlx5_alloc_cmd_msg()
warn: use 'flags' here instead of GFP_XXX?"
811 static struct mlx5_cmd_msg *mlx5_alloc_cmd_msg(struct mlx5_core_dev *dev,
812 gfp_t flags, int size)
^^^^^^^^^^^
813 {
814 struct mlx5_cmd_mailbox *tmp, *head = NULL;
815 struct mlx5_cmd_prot_block *block;
816 struct mlx5_cmd_msg *msg;
817 int blen;
818 int err;
819 int n;
820 int i;
821
822 msg = kzalloc(sizeof(*msg), GFP_KERNEL);
^^^^^^^^^^
823 if (!msg)
824 return ERR_PTR(-ENOMEM);
825
826 blen = size - min_t(int, sizeof(msg->first.data), size);
827 n = (blen + MLX5_CMD_DATA_BLOCK_SIZE - 1) / MLX5_CMD_DATA_BLOCK_SIZE;
828
829 for (i = 0; i < n; i++) {
830 tmp = alloc_cmd_box(dev, flags);
^^^^^
There is a kmalloc() in alloc_cmd_box() that uses flags as well as a
pci_pool_alloc() that uses it.
831 if (IS_ERR(tmp)) {
832 mlx5_core_warn(dev, "failed allocating block\n");
regards,
dan carpenter
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 8+ messages in thread[parent not found: <20130710105538.GB31232-dZEljifmRObu9KfB+GxooP8+0UxHXcjY@public.gmane.org>]
* Re: mlx5: Add driver for Mellanox Connect-IB adapters [not found] ` <20130710105538.GB31232-dZEljifmRObu9KfB+GxooP8+0UxHXcjY@public.gmane.org> @ 2013-07-15 14:29 ` Or Gerlitz 2013-07-15 15:18 ` Eli Cohen 1 sibling, 0 replies; 8+ messages in thread From: Or Gerlitz @ 2013-07-15 14:29 UTC (permalink / raw) To: Dan Carpenter Cc: eli-VPRAkNaXOzVWk0Htik3J/w, linux-rdma-u79uwXL29TY76Z2rM5mHXA On 10/07/2013 13:55, Dan Carpenter wrote: > Hello Eli Cohen, > > The patch e126ba97dba9: "mlx5: Add driver for Mellanox Connect-IB > adapters" from Jul 7, 2013, leads to the following Smatch warning: > "drivers/net/ethernet/mellanox/mlx5/core/cmd.c:822 > mlx5_alloc_cmd_msg() > warn: use 'flags' here instead of GFP_XXX?" > > 811 static struct mlx5_cmd_msg *mlx5_alloc_cmd_msg(struct mlx5_core_dev *dev, > 812 gfp_t flags, int size) > ^^^^^^^^^^^ > > 813 { > 814 struct mlx5_cmd_mailbox *tmp, *head = NULL; > 815 struct mlx5_cmd_prot_block *block; > 816 struct mlx5_cmd_msg *msg; > 817 int blen; > 818 int err; > 819 int n; > 820 int i; > 821 > 822 msg = kzalloc(sizeof(*msg), GFP_KERNEL); > ^^^^^^^^^^ > 823 if (!msg) > 824 return ERR_PTR(-ENOMEM); > 825 > 826 blen = size - min_t(int, sizeof(msg->first.data), size); > 827 n = (blen + MLX5_CMD_DATA_BLOCK_SIZE - 1) / MLX5_CMD_DATA_BLOCK_SIZE; > 828 > 829 for (i = 0; i < n; i++) { > 830 tmp = alloc_cmd_box(dev, flags); > ^^^^^ > There is a kmalloc() in alloc_cmd_box() that uses flags as well as a > pci_pool_alloc() that uses it. > > 831 if (IS_ERR(tmp)) { > 832 mlx5_core_warn(dev, "failed allocating block\n"); > > Hi, I think Eli has some problems with his email account for mailing lists, so sorry for the delay. Once this is fixed, he should be addressing your email. Or. -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: mlx5: Add driver for Mellanox Connect-IB adapters [not found] ` <20130710105538.GB31232-dZEljifmRObu9KfB+GxooP8+0UxHXcjY@public.gmane.org> 2013-07-15 14:29 ` Or Gerlitz @ 2013-07-15 15:18 ` Eli Cohen 1 sibling, 0 replies; 8+ messages in thread From: Eli Cohen @ 2013-07-15 15:18 UTC (permalink / raw) To: Dan Carpenter Cc: eli-VPRAkNaXOzVWk0Htik3J/w, linux-rdma-u79uwXL29TY76Z2rM5mHXA Hi Dan, thanks for cathing this. I will fix this an a subsequent patch. Currently we can consider this non critical as we don't use commands from interrupt context. On Wed, Jul 10, 2013 at 01:55:38PM +0300, Dan Carpenter wrote: > Hello Eli Cohen, > > The patch e126ba97dba9: "mlx5: Add driver for Mellanox Connect-IB > adapters" from Jul 7, 2013, leads to the following Smatch warning: > "drivers/net/ethernet/mellanox/mlx5/core/cmd.c:822 > mlx5_alloc_cmd_msg() > warn: use 'flags' here instead of GFP_XXX?" > > 811 static struct mlx5_cmd_msg *mlx5_alloc_cmd_msg(struct mlx5_core_dev *dev, > 812 gfp_t flags, int size) > ^^^^^^^^^^^ > > 813 { > 814 struct mlx5_cmd_mailbox *tmp, *head = NULL; > 815 struct mlx5_cmd_prot_block *block; > 816 struct mlx5_cmd_msg *msg; > 817 int blen; > 818 int err; > 819 int n; > 820 int i; > 821 > 822 msg = kzalloc(sizeof(*msg), GFP_KERNEL); > ^^^^^^^^^^ > 823 if (!msg) > 824 return ERR_PTR(-ENOMEM); > 825 > 826 blen = size - min_t(int, sizeof(msg->first.data), size); > 827 n = (blen + MLX5_CMD_DATA_BLOCK_SIZE - 1) / MLX5_CMD_DATA_BLOCK_SIZE; > 828 > 829 for (i = 0; i < n; i++) { > 830 tmp = alloc_cmd_box(dev, flags); > ^^^^^ > There is a kmalloc() in alloc_cmd_box() that uses flags as well as a > pci_pool_alloc() that uses it. > > 831 if (IS_ERR(tmp)) { > 832 mlx5_core_warn(dev, "failed allocating block\n"); > > regards, > dan carpenter > > -- > To unsubscribe from this list: send the line "unsubscribe linux-rdma" in > the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 8+ messages in thread
* re: mlx5: Add driver for Mellanox Connect-IB adapters
@ 2013-07-10 10:54 Dan Carpenter
[not found] ` <20130710105415.GA31232-dZEljifmRObu9KfB+GxooP8+0UxHXcjY@public.gmane.org>
0 siblings, 1 reply; 8+ messages in thread
From: Dan Carpenter @ 2013-07-10 10:54 UTC (permalink / raw)
To: eli; +Cc: linux-rdma, linux-sparse
---
Side note: Sparse should warn about endian bugs but in linux-next
endian checking is disabled because we hit:
include/uapi/linux/swab.h:71:16: error: undefined identifier '__builtin_bswap64'
include/uapi/linux/swab.h:71:33: error: not a function <noident>
do_error() in Sparse disables warning messages. I feel like we
shouldn't do that.
/* Shut up warnings after an error */
max_warnings = 0;
---
Hello Eli Cohen,
The patch e126ba97dba9: "mlx5: Add driver for Mellanox Connect-IB
adapters" from Jul 7, 2013, has an endian related bug:
drivers/net/ethernet/mellanox/mlx5/core/main.c
214 memset(&set_out, 0, sizeof(set_out));
215 set_ctx->hca_cap.uar_page_sz = cpu_to_be16(PAGE_SHIFT - 12);
^^^^^^^^^^^^^^^^^^^
This is defined in the header as be32 but we are saving a be16 to it.
My guess is the header is correct and the be16 is wrong.
216 set_ctx->hdr.opcode = cpu_to_be16(MLX5_CMD_OP_SET_HCA_CAP);
217 err = mlx5_cmd_exec(dev, set_ctx, sizeof(*set_ctx),
218 &set_out, sizeof(set_out));
regards,
dan carpenter
^ permalink raw reply [flat|nested] 8+ messages in thread[parent not found: <20130710105415.GA31232-dZEljifmRObu9KfB+GxooP8+0UxHXcjY@public.gmane.org>]
* Re: mlx5: Add driver for Mellanox Connect-IB adapters [not found] ` <20130710105415.GA31232-dZEljifmRObu9KfB+GxooP8+0UxHXcjY@public.gmane.org> @ 2013-07-10 11:28 ` Or Gerlitz 2013-07-10 20:16 ` Josh Triplett 1 sibling, 0 replies; 8+ messages in thread From: Or Gerlitz @ 2013-07-10 11:28 UTC (permalink / raw) To: Dan Carpenter Cc: eli-VPRAkNaXOzVWk0Htik3J/w, linux-rdma-u79uwXL29TY76Z2rM5mHXA, linux-sparse-u79uwXL29TY76Z2rM5mHXA, Fengguang Wu On 10/07/2013 13:54, Dan Carpenter wrote: > --- > Side note: Sparse should warn about endian bugs but in linux-next > endian checking is disabled because we hit: > > include/uapi/linux/swab.h:71:16: error: undefined identifier '__builtin_bswap64' > include/uapi/linux/swab.h:71:33: error: not a function <noident> > > do_error() in Sparse disables warning messages. I feel like we > shouldn't do that. > > /* Shut up warnings after an error */ > max_warnings = 0; > --- > > Hello Eli Cohen, > > The patch e126ba97dba9: "mlx5: Add driver for Mellanox Connect-IB > adapters" from Jul 7, 2013, has an endian related bug: > > drivers/net/ethernet/mellanox/mlx5/core/main.c > 214 memset(&set_out, 0, sizeof(set_out)); > 215 set_ctx->hca_cap.uar_page_sz = cpu_to_be16(PAGE_SHIFT - 12); > ^^^^^^^^^^^^^^^^^^^ > This is defined in the header as be32 but we are saving a be16 to it. > My guess is the header is correct and the be16 is wrong. > > 216 set_ctx->hdr.opcode = cpu_to_be16(MLX5_CMD_OP_SET_HCA_CAP); > 217 err = mlx5_cmd_exec(dev, set_ctx, sizeof(*set_ctx), > 218 &set_out, sizeof(set_out)); > > regards, > dan carpenter > Dan, this sparse catch was reported earlier by Fengguang Wu <fengguang.wu-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>, we have a fix, will send now Or. -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: mlx5: Add driver for Mellanox Connect-IB adapters [not found] ` <20130710105415.GA31232-dZEljifmRObu9KfB+GxooP8+0UxHXcjY@public.gmane.org> 2013-07-10 11:28 ` Or Gerlitz @ 2013-07-10 20:16 ` Josh Triplett 1 sibling, 0 replies; 8+ messages in thread From: Josh Triplett @ 2013-07-10 20:16 UTC (permalink / raw) To: Dan Carpenter Cc: eli-VPRAkNaXOzVWk0Htik3J/w, linux-rdma-u79uwXL29TY76Z2rM5mHXA, linux-sparse-u79uwXL29TY76Z2rM5mHXA On Wed, Jul 10, 2013 at 01:54:15PM +0300, Dan Carpenter wrote: > --- > Side note: Sparse should warn about endian bugs but in linux-next > endian checking is disabled because we hit: > > include/uapi/linux/swab.h:71:16: error: undefined identifier '__builtin_bswap64' > include/uapi/linux/swab.h:71:33: error: not a function <noident> > > do_error() in Sparse disables warning messages. I feel like we > shouldn't do that. No, I think that's the correct behavior: sparse should only generate *errors* rather than warnings when it hits something that prevents it from handling some chunk of code, in which case we'd get a huge number of spurious warnings if not suppressed. In any case, current Sparse has __builtin_bswap64, so you shouldn't get that error. - Josh Triplett -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2014-06-26 10:37 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-06-20 17:58 mlx5: Add driver for Mellanox Connect-IB adapters Dan Carpenter
2014-06-26 10:37 ` Eli Cohen
-- strict thread matches above, loose matches on Subject: below --
2013-07-10 10:55 Dan Carpenter
[not found] ` <20130710105538.GB31232-dZEljifmRObu9KfB+GxooP8+0UxHXcjY@public.gmane.org>
2013-07-15 14:29 ` Or Gerlitz
2013-07-15 15:18 ` Eli Cohen
2013-07-10 10:54 Dan Carpenter
[not found] ` <20130710105415.GA31232-dZEljifmRObu9KfB+GxooP8+0UxHXcjY@public.gmane.org>
2013-07-10 11:28 ` Or Gerlitz
2013-07-10 20:16 ` Josh Triplett
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox