Hello Hyeonggon,
Thanks for replying :)
在 2022/9/12 15:18, Hyeonggon Yoo 写道:
On Mon, Sep 12, 2022 at 01:59:39PM +0800, Ben Luo wrote:
NULL is definitly not a valid address
Signed-off-by: Ben Luo <luoben@xxxxxxxxxxxxxxxxx>
---
mm/slub.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/mm/slub.c b/mm/slub.c
index 862dbd9..50fad18 100644
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -674,7 +674,7 @@ static inline int check_valid_pointer(struct kmem_cache *s,
void *base;
if (!object)
- return 1;
+ return 0;
base = slab_address(slab);
object = kasan_reset_tag(object);
--
1.8.3.1
Hello Ben.
The return value is used to check if the @object has valid pointer
in @slab. (used for debugging) the return value is 0 if valid, 1 if invalid.
It does not return a pointer. So changing it to 0 because 1 is invalid
address does not make sense.
I know the meaning of this return value, but I think this function was
expected by returning 0 if invalid ,1 if valid
Check this original code:
if (object < base || object >= base + slab->objects * s->size ||
(object - base) % s->size) {
return 0;
}
Object not in range of [base, base+length) is an invalid slab address,
and it will return 0
--
Thanks,
Ben