RDMA/cma: Remove open coding of overflow checking for private_data_len
[sfrench/cifs-2.6.git] / drivers / infiniband / core / cma.c
index 835ac54d4a24c8f5cb1a1184f012926c5a6aa1f2..8a98aa90956f7403231ee8486e435bb3e637680f 100644 (file)
@@ -4033,8 +4033,7 @@ static int cma_resolve_ib_udp(struct rdma_id_private *id_priv,
 
        memset(&req, 0, sizeof req);
        offset = cma_user_data_offset(id_priv);
-       req.private_data_len = offset + conn_param->private_data_len;
-       if (req.private_data_len < conn_param->private_data_len)
+       if (check_add_overflow(offset, conn_param->private_data_len, &req.private_data_len))
                return -EINVAL;
 
        if (req.private_data_len) {
@@ -4093,8 +4092,7 @@ static int cma_connect_ib(struct rdma_id_private *id_priv,
 
        memset(&req, 0, sizeof req);
        offset = cma_user_data_offset(id_priv);
-       req.private_data_len = offset + conn_param->private_data_len;
-       if (req.private_data_len < conn_param->private_data_len)
+       if (check_add_overflow(offset, conn_param->private_data_len, &req.private_data_len))
                return -EINVAL;
 
        if (req.private_data_len) {