tx_gpu is not assigned or initialized properly.
Test-Parameters: trivial
Fixes:
f792297212 ("LU-16211 o2iblnd: Avoid NULL md deref")
Signed-off-by: Jinshan Xiong <jinshan.xiong@gmail.com>
Change-Id: I5e14d66f41f6194203fec7832493efd432b54c36
Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/52702
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Andrew Perepechko <andrew.perepechko@hpe.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
#define LNET_MD_FLAG_DISCARD BIT(4)
#define LNET_MD_FLAG_GPU BIT(5) /**< Special mapping needs */
+static inline bool lnet_md_is_gpu(struct lnet_libmd *md)
+{
+ return (md != NULL) && !!(md->md_flags & LNET_MD_FLAG_GPU);
+}
+
struct lnet_test_peer {
/* info about peers we are trying to fail */
struct list_head tp_list; /* ln_test_peers */
LASSERT (tx->tx_lntmsg[1] == NULL);
LASSERT (tx->tx_nfrags == 0);
+ tx->tx_gpu = 0;
tx->tx_gaps = false;
tx->tx_hstatus = LNET_MSG_STATUS_OK;
int max_nkiov;
int sg_count = 0;
- CDEBUG(D_NET, "niov %d offset %d nob %d\n", nkiov, offset, nob);
+ CDEBUG(D_NET, "niov %d offset %d nob %d gpu %d\n",
+ nkiov, offset, nob, tx->tx_gpu);
LASSERT(nob > 0);
LASSERT(nkiov > 0);
return -ENOMEM;
}
ibmsg = tx->tx_msg;
- gpu = msg_md ? (msg_md->md_flags & LNET_MD_FLAG_GPU) : false;
+ gpu = lnet_md_is_gpu(msg_md);
switch (type) {
default:
goto failed_0;
}
-
- tx->tx_gpu = msg_md ? (msg_md->md_flags & LNET_MD_FLAG_GPU) : 0;
+ tx->tx_gpu = lnet_md_is_gpu(msg_md);
if (nob == 0)
rc = 0;
break;
}
- tx->tx_gpu = msg_md ? (msg_md->md_flags & LNET_MD_FLAG_GPU) : 0;
+ tx->tx_gpu = lnet_md_is_gpu(msg_md);
txmsg = tx->tx_msg;
rd = &txmsg->ibm_u.putack.ibpam_rd;
unsigned int best_dev_prio;
int best_ni_fatal;
unsigned int dev_idx = UINT_MAX;
- bool gpu = md ? (md->md_flags & LNET_MD_FLAG_GPU) : false;
+ bool gpu = lnet_md_is_gpu(md);
if (gpu) {
struct page *page = lnet_get_first_page(md, offset);
bool
lnet_is_rdma_only_page(struct page *page)
{
- bool found = false;
+ bool is_gpu_page = false;
struct nvfs_dma_rw_ops *nvfs_ops;
- if (!page)
- return found;
+ LASSERT(page != NULL);
nvfs_ops = nvfs_get_ops();
- if (!nvfs_ops)
- return found;
-
- if (!nvfs_ops->nvfs_is_gpu_page(page))
- goto out;
-
- found = true;
-
-out:
- nvfs_put_ops();
- return found;
+ if (nvfs_ops != NULL) {
+ is_gpu_page = nvfs_ops->nvfs_is_gpu_page(page);
+ nvfs_put_ops();
+ }
+ return is_gpu_page;
}
EXPORT_SYMBOL(lnet_is_rdma_only_page);