summaryrefslogtreecommitdiff
path: root/kernel/unwind/deferred.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/unwind/deferred.c')
-rw-r--r--kernel/unwind/deferred.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/kernel/unwind/deferred.c b/kernel/unwind/deferred.c
index a3d26014a2e66..2311b725d6914 100644
--- a/kernel/unwind/deferred.c
+++ b/kernel/unwind/deferred.c
@@ -45,7 +45,7 @@ static inline bool try_assign_cnt(struct unwind_task_info *info, u32 cnt)
static DEFINE_MUTEX(callback_mutex);
static LIST_HEAD(callbacks);
-#define RESERVED_BITS (UNWIND_PENDING)
+#define RESERVED_BITS (UNWIND_PENDING | UNWIND_USED)
/* Zero'd bits are available for assigning callback users */
static unsigned long unwind_mask = RESERVED_BITS;
@@ -140,6 +140,9 @@ int unwind_user_faultable(struct unwind_stacktrace *trace)
cache->nr_entries = trace->nr;
+ /* Clear nr_entries on way back to user space */
+ set_bit(UNWIND_USED_BIT, &info->unwind_mask);
+
return 0;
}