From: Bart Van Assche <bvanassche@acm.org>
To: David Rientjes <rientjes@google.com>,
Andrew Morton <akpm@linux-foundation.org>
Cc: Ingo Molnar <mingo@kernel.org>,
Peter Zijlstra <a.p.zijlstra@chello.nl>,
"David S. Miller" <davem@davemloft.net>,
linux-kernel <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH RESEND] spin_lock_*(): Always evaluate second argument
Date: Wed, 06 Aug 2014 19:07:37 +0200 [thread overview]
Message-ID: <53E260D9.6030803@acm.org> (raw)
In-Reply-To: <alpine.DEB.2.02.1407221612330.10592@chino.kir.corp.google.com>
On 07/23/14 01:16, David Rientjes wrote:
> On Tue, 22 Jul 2014, Andrew Morton wrote:
>>> Evaluating a macro argument only if certain configuration options
>>> have been selected is confusing and error-prone. Hence always
>>> evaluate the second argument of spin_lock_nested() and
>>> spin_lock_nest_lock().
>>>
>>> An intentional side effect of this patch is that it avoids that
>>> the following warning is reported for netif_addr_lock_nested()
>>> when building with CONFIG_DEBUG_LOCK_ALLOC=n and with W=1:
>>>
>>> ...
>>>
>>> --- a/include/linux/spinlock.h
>>> +++ b/include/linux/spinlock.h
>>> @@ -197,8 +197,10 @@ static inline void do_raw_spin_unlock(raw_spinlock_t *lock) __releases(lock)
>>> _raw_spin_lock_nest_lock(lock, &(nest_lock)->dep_map); \
>>> } while (0)
>>> #else
>>> -# define raw_spin_lock_nested(lock, subclass) _raw_spin_lock(lock)
>>> -# define raw_spin_lock_nest_lock(lock, nest_lock) _raw_spin_lock(lock)
>>> +# define raw_spin_lock_nested(lock, subclass) \
>>> + ((void)(subclass), _raw_spin_lock(lock))
>>> +# define raw_spin_lock_nest_lock(lock, nest_lock) \
>>> + ((void)(nest_lock), _raw_spin_lock(lock))
>>> #endif
>>>
>>
>> Did you try converting these to static inline functions? That should
>> squish the warning and makes the code nicer instead of nastier...
>
> Not sure how that would be done since _raw_spin_lock isn't declared in
> this scope.
>
> Taking a second look, however, I think the patch doesn't need to modify
> raw_spin_lock_nest_lock() for the problem being reported and evaluating
> the parameter of type struct lockdep_map * probably is meaningless.
>
> Bart, is it possible to just get away with the raw_spin_lock_nested()
> change?
Probably ... I will post an updated version of this patch.
Bart.
next prev parent reply other threads:[~2014-08-06 17:27 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-22 7:17 [PATCH RESEND] spin_lock_*(): Always evaluate second argument Bart Van Assche
2014-07-22 20:37 ` Andrew Morton
2014-07-22 23:16 ` David Rientjes
2014-08-06 17:07 ` Bart Van Assche [this message]
2014-08-06 17:10 ` [PATCH v2] spin_lock_nested(): " Bart Van Assche
2014-08-06 21:56 ` David Rientjes
2014-08-08 10:32 ` Bart Van Assche
2014-08-08 10:35 ` [PATCH v3] " Bart Van Assche
2014-08-08 21:52 ` David Rientjes
2014-08-09 6:17 ` Peter Zijlstra
2014-08-13 10:56 ` [tip:locking/core] locking/spinlocks: Always evaluate the second argument of spin_lock_nested() tip-bot for Bart Van Assche
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=53E260D9.6030803@acm.org \
--to=bvanassche@acm.org \
--cc=a.p.zijlstra@chello.nl \
--cc=akpm@linux-foundation.org \
--cc=davem@davemloft.net \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=rientjes@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.