]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
cgroup: add lockless fast-path checks to cgroup_file_notify()
authorShakeel Butt <shakeel.butt@linux.dev>
Wed, 11 Mar 2026 01:01:00 +0000 (18:01 -0700)
committerTejun Heo <tj@kernel.org>
Wed, 11 Mar 2026 22:16:21 +0000 (12:16 -1000)
commit4616120fca7f6d48b4c640e3975352e451e9c2ce
tree570dced8fa035896b50c7281ad30d85284bbf8b1
parent05070cd654f38346d051b8c411faff196fa58880
cgroup: add lockless fast-path checks to cgroup_file_notify()

Add lockless checks before acquiring cgroup_file_kn_lock:

1. READ_ONCE(cfile->kn) NULL check to skip torn-down files.
2. READ_ONCE(cfile->notified_at) rate-limit check to skip when
   within the notification interval.  If within the interval, arm
   the deferred timer via timer_reduce() and confirm it is pending
   before returning -- if the timer fired in between, fall through
   to the lock path so the notification is not lost.

Both checks have safe error directions -- a stale read can only
cause unnecessary lock acquisition, never a missed notification.

The critical section is simplified to just taking a kernfs_get()
reference and updating notified_at.

Annotate cfile->kn and cfile->notified_at write sites with
WRITE_ONCE() to pair with the lockless readers.

Reported-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Shakeel Butt <shakeel.butt@linux.dev>
Signed-off-by: Tejun Heo <tj@kernel.org>
kernel/cgroup/cgroup.c