Merge tag 'for-5.15/libata-2021-08-30' of git://git.kernel.dk/linux-block
[linux-2.6-microblaze.git] / fs / timerfd.c
index c5509d2..e9c96a0 100644 (file)
@@ -115,6 +115,22 @@ void timerfd_clock_was_set(void)
        rcu_read_unlock();
 }
 
+static void timerfd_resume_work(struct work_struct *work)
+{
+       timerfd_clock_was_set();
+}
+
+static DECLARE_WORK(timerfd_work, timerfd_resume_work);
+
+/*
+ * Invoked from timekeeping_resume(). Defer the actual update to work so
+ * timerfd_clock_was_set() runs in task context.
+ */
+void timerfd_resume(void)
+{
+       schedule_work(&timerfd_work);
+}
+
 static void __timerfd_remove_cancel(struct timerfd_ctx *ctx)
 {
        if (ctx->might_cancel) {