From bdab18633a302c82b5e5d5dbc4e38b0baf9c0837 Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Sun, 20 Sep 2026 08:15:23 -0700 Subject: Merge tag 'locking-urgent-2026-09-20' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip Pull futex fix from Ingo Molnar: - Also allocate a default private futex hash on vfork() as well, to avoid races with (private) futex waiters (Peter Zijlstra) * tag 'locking-urgent-2026-09-20' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: futex: Also allocate private hash on vfork() --- drivers/dma-buf/sync_debug.h | 72 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 drivers/dma-buf/sync_debug.h (limited to 'drivers/dma-buf/sync_debug.h') diff --git a/drivers/dma-buf/sync_debug.h b/drivers/dma-buf/sync_debug.h new file mode 100644 index 000000000..c49324505 --- /dev/null +++ b/drivers/dma-buf/sync_debug.h @@ -0,0 +1,72 @@ +/* + * Sync File validation framework and debug infomation + * + * Copyright (C) 2012 Google, Inc. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + */ + +#ifndef _LINUX_SYNC_H +#define _LINUX_SYNC_H + +#include +#include +#include +#include + +#include +#include + +/** + * struct sync_timeline - sync object + * @kref: reference count on fence. + * @name: name of the sync_timeline. Useful for debugging + * @lock: lock protecting @pt_list and @value + * @pt_tree: rbtree of active (unsignaled/errored) sync_pts + * @pt_list: list of active (unsignaled/errored) sync_pts + * @sync_timeline_list: membership in global sync_timeline_list + */ +struct sync_timeline { + struct kref kref; + char name[32]; + + /* protected by lock */ + u64 context; + int value; + + struct rb_root pt_tree; + struct list_head pt_list; + spinlock_t lock; + + struct list_head sync_timeline_list; +}; + +static inline struct sync_timeline *dma_fence_parent(struct dma_fence *fence) +{ + return container_of(fence->extern_lock, struct sync_timeline, lock); +} + +/** + * struct sync_pt - sync_pt object + * @base: base fence object + * @link: link on the sync timeline's list + * @node: node in the sync timeline's tree + * @deadline: the earliest fence deadline hint + */ +struct sync_pt { + struct dma_fence base; + struct list_head link; + struct rb_node node; + ktime_t deadline; +}; + +extern const struct file_operations sw_sync_debugfs_fops; + +void sync_timeline_debug_add(struct sync_timeline *obj); +void sync_timeline_debug_remove(struct sync_timeline *obj); + +#endif /* _LINUX_SYNC_H */ -- cgit v1.3.1