Hi,

I'm looking at the printk call in
__timekeeping_inject_sleeptime(), introduced in cb5de2f8
(time: Catch invalid timespec sleep values in __timekeeping_inject_sleeptime)

Is it safe to call printk() while timekeeper_seq is held for
writing?

What about this call chain?
  printk
    vprintk_emit
      console_unlock
        up(&console_sem)
          __up
            wake_up_process
              try_to_wake_up
                ttwu_do_activate
                  ttwu_activate
                    activate_task
                      enqueue_task
                        enqueue_task_fair
                          hrtick_update
                            hrtick_start_fair
                              hrtick_start_fair
                                get_time
                                  ktime_get
                                    --> endless loop on
                                    read_seqcount_retry(&timekeeper_seq, ...)
                  

It looks like an unlikely but possible deadlock. 
Or did I overlook something?

Thanks!

-- 
Jiri Bohac <[email protected]>
SUSE Labs, SUSE CZ

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to