45 lines
1.2 KiB
Diff
45 lines
1.2 KiB
Diff
From 3349ade9c1f40c0999c722dda4cd84b9869bebe2 Mon Sep 17 00:00:00 2001
|
|
From: lixiaokeng <lixiaokeng@huawei.com>
|
|
Date: Mon, 29 Nov 2021 21:15:56 +0800
|
|
Subject: [PATCH] cachefilesd: fix abort() in decant_cull_table
|
|
|
|
decant_cull_table only deals data with 32 bit, we should fix it
|
|
to support 64 bit, or it will coredump.
|
|
|
|
Signed-off-by: lixiaokeng <lixiaokeng@huawei.com>
|
|
Signed-off-by: volcanodragon <linfeilong@huawei.com>
|
|
---
|
|
cachefilesd.c | 9 ++++++++-
|
|
1 file changed, 8 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/cachefilesd.c b/cachefilesd.c
|
|
index d4d236f..e9de4e4 100644
|
|
--- a/cachefilesd.c
|
|
+++ b/cachefilesd.c
|
|
@@ -1512,6 +1512,13 @@ static void decant_cull_table(void)
|
|
{
|
|
unsigned loop, avail, copy, leave, space, n;
|
|
|
|
+ long mask = 15;
|
|
+ long illegal = 6;
|
|
+
|
|
+ /* 8 is bit of byte, 4 is valid bit of mask and illegal */
|
|
+ mask = mask << (sizeof(void *) * 8 - 4);
|
|
+ illegal = illegal << (sizeof(void *) * 8 - 4);
|
|
+
|
|
if (scan_cursor)
|
|
error("Can't decant cull table whilst scanning");
|
|
|
|
@@ -1567,7 +1574,7 @@ static void decant_cull_table(void)
|
|
|
|
check:
|
|
for (loop = 0; loop < nr_in_ready_table; loop++)
|
|
- if (((long)cullready[loop] & 0xf0000000) == 0x60000000)
|
|
+ if (((long)cullready[loop] & mask) == illegal)
|
|
abort();
|
|
}
|
|
|
|
--
|
|
1.8.3.1
|
|
|