git: e9a846468acf - main - ktrace: Use STAILQ_EMPTY_ATOMIC when checking for records in userret()
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sun, 23 Mar 2025 11:59:54 UTC
The branch main has been updated by markj:
URL: https://cgit.FreeBSD.org/src/commit/?id=e9a846468acfbba35ca40b888670559aaff7228d
commit e9a846468acfbba35ca40b888670559aaff7228d
Author: Mark Johnston <markj@FreeBSD.org>
AuthorDate: 2025-03-23 11:54:59 +0000
Commit: Mark Johnston <markj@FreeBSD.org>
CommitDate: 2025-03-23 11:54:59 +0000
ktrace: Use STAILQ_EMPTY_ATOMIC when checking for records in userret()
As in commit 36631977d8c9, this check is unlocked and may trigger
spurious assertion failures. Use STAILQ_EMPTY_ATOMIC() here as well.
Fix nearby whitespace.
Reported by: syzkaller
Reviewed by: olce
Fixes: 34740937f7a4 ("queue: New debug macros for STAILQ")
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D49441
---
sys/sys/ktrace.h | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/sys/sys/ktrace.h b/sys/sys/ktrace.h
index 9d06cd33d5d2..6608b9250da4 100644
--- a/sys/sys/ktrace.h
+++ b/sys/sys/ktrace.h
@@ -87,10 +87,9 @@ struct ktr_header {
* is the public interface.
*/
#define KTRCHECK(td, type) ((td)->td_proc->p_traceflag & (1 << type))
-#define KTRPOINT(td, type) (__predict_false(KTRCHECK((td), (type))))
-#define KTRCHECKDRAIN(td) (!(STAILQ_EMPTY(&(td)->td_proc->p_ktr)))
+#define KTRPOINT(td, type) (__predict_false(KTRCHECK((td), (type))))
#define KTRUSERRET(td) do { \
- if (__predict_false(KTRCHECKDRAIN(td))) \
+ if (__predict_false(!STAILQ_EMPTY_ATOMIC(&(td)->td_proc->p_ktr))) \
ktruserret(td); \
} while (0)