From 53e7176196b897d9924a4bbc8f8994fa2888ab0e Mon Sep 17 00:00:00 2001 From: Christian Soffke Date: Sun, 24 Mar 2024 03:42:53 +0100 Subject: dircache: don't unpin invalid buflib handle when building volumes Buflib pinning was introduced here in 1718cf5. If the device has to immediately shut down after booting because of a low battery, the directory cache may be disabled by the time core_unpin() is reached. Its handle will have been reset to 0 in that case, triggering a panic message due to an invalid buflib handle. Change-Id: Ie34c3f7142d8406b66277ef185bc9ecf387d7295 --- firmware/common/dircache.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/firmware/common/dircache.c b/firmware/common/dircache.c index 41564194d0..c274b6c62c 100644 --- a/firmware/common/dircache.c +++ b/firmware/common/dircache.c @@ -1882,7 +1882,8 @@ static void build_volumes(void) logf("Done, %ld KiB used", dircache.size / 1024); - core_unpin(dircache_runinfo.handle); + if (dircache_runinfo.handle > 0) /* dircache may have been disabled */ + core_unpin(dircache_runinfo.handle); } /** -- cgit v1.2.3