[Drbd-dev] [PATCH] check head in page_chain_del for every loop

Ming Li tolimit1019 at gmail.com
Thu Apr 15 08:36:46 CEST 2021


From: Ming Li <tolimit1019 at gmail.com>

there will be crash when we get a NULL head in loop.

Signed-off-by: Ming Li <tolimit1019 at gmail.com>
---
 drbd/drbd_receiver.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drbd/drbd_receiver.c b/drbd/drbd_receiver.c
index f127a235..28fb2e06 100644
--- a/drbd/drbd_receiver.c
+++ b/drbd/drbd_receiver.c
@@ -280,12 +280,12 @@ static struct page *page_chain_del(struct page **head, int count)
 	BUG_ON(!head);
 
 	page = READ_ONCE(*head);
-	if (!page)
-		return NULL;
 
 	do {
 		n = count;
 		rv_head = page;
+		if (!page)
+			return NULL;
 		while (true) {
 			tmp = page_chain_next(page);
 			if (--n == 0)
-- 
2.24.3 (Apple Git-128)



More information about the drbd-dev mailing list