Re: lock in vsprintf(): was: Re: [PATCH] of: Add printf '%pOFm' for generating modalias
From: Petr Mladek
Date: Fri Dec 20 2024 - 03:01:34 EST
On Thu 2024-12-19 20:17:21, John Ogness wrote:
> On 2024-12-19, Petr Mladek <pmladek@xxxxxxxx> wrote:
> > I do not want to revert everything now just because of theoretical
> > problems.
>
> What would you revert? This has always been an issue for printk().
I did mean the already existing printf modifier which already
take a lock, for example, %pOFC.
> > Well, it would be nice to document the lock dependency in
> > Documentation/core-api/printk-formats.rst
>
> Yes. If any locking is involved at all, such specifiers should be
> documented as not safe in NMI context or within printk_cpu_sync
> blocks. Also, it should be checked if all such locks are
> raw_spinlock_t. If any other lock type is used, it probably is already
> generating a lockdep splat since printk() formats records with local
> interrupts off.
Great point!
> Perhaps we should create a kunit that calls printk() for each of the
> supported specifiers and see if any lockdep splats appear.
It might be possible to somehow reuse the existing module lib/test_printf.c.
Best Regards,
Petr