From: Maoyi Xie Date: Tue, 26 May 2026 05:46:53 +0000 (+0800) Subject: RDMA/hns: drop dead empty check in setup_root_hem() X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ba7c4912f7abb0e30b920faf86b32ffb9e5e8b14;p=thirdparty%2Flinux.git RDMA/hns: drop dead empty check in setup_root_hem() setup_root_hem() reads the first entry of head->root and checks the returned pointer against NULL: root_hem = list_first_entry(&head->root, struct hns_roce_hem_item, list); if (!root_hem) return -ENOMEM; list_first_entry() never returns NULL. On an empty list it returns container_of(head, ..., list), a non-NULL garbage pointer that aliases the head. So the check is dead. The only caller adds an entry to head.root right before invoking setup_root_hem(): list_add(&root_hem->list, &head.root); ret = setup_root_hem(..., &head, ...); So head.root is guaranteed non-empty on entry. Drop the check. Link: https://patch.msgid.link/r/20260526054653.2054800-1-maoyixie.tju@gmail.com Suggested-by: Jason Gunthorpe Signed-off-by: Maoyi Xie Signed-off-by: Jason Gunthorpe --- diff --git a/drivers/infiniband/hw/hns/hns_roce_hem.c b/drivers/infiniband/hw/hns/hns_roce_hem.c index ccb40f8a48b72..7041a8e9134b2 100644 --- a/drivers/infiniband/hw/hns/hns_roce_hem.c +++ b/drivers/infiniband/hw/hns/hns_roce_hem.c @@ -1269,8 +1269,6 @@ setup_root_hem(struct hns_roce_dev *hr_dev, struct hns_roce_hem_list *hem_list, root_hem = list_first_entry(&head->root, struct hns_roce_hem_item, list); - if (!root_hem) - return -ENOMEM; total = 0; for (i = 0; i < region_cnt && total <= max_ba_num; i++) {