[rds-devel] [bug report] net/rds: Handle ODP mr registration/unregistration
Dan Carpenter
dan.carpenter at oracle.com
Wed Jan 22 20:55:48 PST 2020
Hello Hans Westgaard Ry,
The patch 2eafa1746f17: "net/rds: Handle ODP mr
registration/unregistration" from Jan 15, 2020, leads to the
following static checker warning:
net/rds/rdma.c:741 rds_cmsg_rdma_args()
warn: assigning IS_ERR()
net/rds/rdma.c
717 goto out_pages;
718
719 if (ret == -EOPNOTSUPP) {
720 struct rds_mr *local_odp_mr;
721
722 if (!rs->rs_transport->get_mr) {
723 ret = -EOPNOTSUPP;
724 goto out_pages;
725 }
726 local_odp_mr =
727 kzalloc(sizeof(*local_odp_mr), GFP_KERNEL);
728 if (!local_odp_mr) {
729 ret = -ENOMEM;
730 goto out_pages;
731 }
732 RB_CLEAR_NODE(&local_odp_mr->r_rb_node);
733 refcount_set(&local_odp_mr->r_refcount, 1);
734 local_odp_mr->r_trans = rs->rs_transport;
735 local_odp_mr->r_sock = rs;
736 local_odp_mr->r_trans_private =
737 rs->rs_transport->get_mr(
738 NULL, 0, rs, &local_odp_mr->r_key, NULL,
739 iov->addr, iov->bytes, ODP_VIRTUAL);
740 if (IS_ERR(local_odp_mr->r_trans_private)) {
741 ret = IS_ERR(local_odp_mr->r_trans_private);
^^^^^^^^^^^^
This should be "ret = PTR_ERR()"
742 rdsdebug("get_mr ret %d %p\"", ret,
743 local_odp_mr->r_trans_private);
744 kfree(local_odp_mr);
745 ret = -EOPNOTSUPP;
My guess is that -EOPNOTSUPP is actually the correct error that we want
to return, but I thought I would point that out as something to
consider
746 goto out_pages;
747 }
748 rdsdebug("Need odp; local_odp_mr %p trans_private %p\n",
749 local_odp_mr, local_odp_mr->r_trans_private);
750 op->op_odp_mr = local_odp_mr;
regards,
dan carpenter
More information about the rds-devel
mailing list