Calling printk with locks held

Dave Hylands dhylands at gmail.com
Thu Jun 2 18:54:56 EDT 2011


Hi Neil,

On Thu, Jun 2, 2011 at 1:43 PM, Neil Baylis <neil.baylis at gmail.com> wrote:
> I've just been told that it's not OK to call printk while holding a lock.
> This came as a surprise to me, as I've written thousands of lines of code
> that calls printk while holding multiple locks, and have not seen any
> problem. The only explanation I was given was that it can deadlock.
> Is this correct? I thought there were very few places where it was not safe
> to call printk.

In general I don't think that there's any issue with calling printk
with locks held. If the lock was held within the console driver using
to send the printk data you might have trouble. I know its fine (but
not recommended for performance reasons) to call printk from interrupt
context.

printk uses the "try" variant on its own locks and if it can't get
that lock then it just adds the data to its internal buffer and
doesn't try to output anything.

-- 
Dave Hylands
Shuswap, BC, Canada
http://www.davehylands.com



More information about the Kernelnewbies mailing list