|
|
@@ -217,15 +217,21 @@ int mlx5_fpga_tls_resync_rx(struct mlx5_core_dev *mdev, u32 handle, u32 seq,
|
|
|
void *cmd;
|
|
|
int ret;
|
|
|
|
|
|
+ rcu_read_lock();
|
|
|
+ flow = idr_find(&mdev->fpga->tls->rx_idr, ntohl(handle));
|
|
|
+ rcu_read_unlock();
|
|
|
+
|
|
|
+ if (!flow) {
|
|
|
+ WARN_ONCE(1, "Received NULL pointer for handle\n");
|
|
|
+ return -EINVAL;
|
|
|
+ }
|
|
|
+
|
|
|
buf = kzalloc(size, GFP_ATOMIC);
|
|
|
if (!buf)
|
|
|
return -ENOMEM;
|
|
|
|
|
|
cmd = (buf + 1);
|
|
|
|
|
|
- rcu_read_lock();
|
|
|
- flow = idr_find(&mdev->fpga->tls->rx_idr, ntohl(handle));
|
|
|
- rcu_read_unlock();
|
|
|
mlx5_fpga_tls_flow_to_cmd(flow, cmd);
|
|
|
|
|
|
MLX5_SET(tls_cmd, cmd, swid, ntohl(handle));
|
|
|
@@ -238,6 +244,8 @@ int mlx5_fpga_tls_resync_rx(struct mlx5_core_dev *mdev, u32 handle, u32 seq,
|
|
|
buf->complete = mlx_tls_kfree_complete;
|
|
|
|
|
|
ret = mlx5_fpga_sbu_conn_sendmsg(mdev->fpga->tls->conn, buf);
|
|
|
+ if (ret < 0)
|
|
|
+ kfree(buf);
|
|
|
|
|
|
return ret;
|
|
|
}
|