From b8f2ae6b494d706b1e4855b439c4930a6a6a2f5c Mon Sep 17 00:00:00 2001 From: Kazuhito Hagio Date: Fri, 10 Jun 2022 16:00:14 +0900 Subject: [PATCH 02/29] sbitmapq: Limit kernels without sbitmap again commit 364b2e413c69 ("sbitmapq: remove struct and member validation in sbitmapq_init()") allowed the use of the "sbitmapq" command unconditionally. Without the patch, the command fails with the following error on kernels without sbitmap: crash> sbitmapq ffff88015796e550 sbitmapq: invalid structure member offset: sbitmap_queue_sb FILE: sbitmap.c LINE: 385 FUNCTION: sbitmap_queue_context_load() Now the command supports Linux 4.9 and later kernels since it was abstracted out, so it can be limited by the non-existence of the sbitmap structure. Signed-off-by: Kazuhito Hagio Signed-off-by: Lianbo Jiang --- sbitmap.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sbitmap.c b/sbitmap.c index be5d30a8ea88..12d6512a1e4d 100644 --- a/sbitmap.c +++ b/sbitmap.c @@ -540,6 +540,10 @@ void sbitmapq_init(void) STRUCT_SIZE_INIT(sbitmap_queue, "sbitmap_queue"); STRUCT_SIZE_INIT(sbq_wait_state, "sbq_wait_state"); + /* sbitmap was abstracted out by commit 88459642cba4 on Linux 4.9. */ + if (INVALID_SIZE(sbitmap)) + command_not_supported(); + MEMBER_OFFSET_INIT(sbitmap_word_depth, "sbitmap_word", "depth"); MEMBER_OFFSET_INIT(sbitmap_word_word, "sbitmap_word", "word"); MEMBER_OFFSET_INIT(sbitmap_word_cleared, "sbitmap_word", "cleared"); -- 2.37.1