[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <51D10390.4060905@akamai.com>
Date: Mon, 01 Jul 2013 00:20:32 -0400
From: Jason Baron <jbaron@...mai.com>
To: Steven Rostedt <rostedt@...dmis.org>
CC: "andi@...stfloor.org" <andi@...stfloor.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
"netdev@...r.kernel.org" <netdev@...r.kernel.org>,
"mingo@...nel.org" <mingo@...nel.org>,
"peterz@...radead.org" <peterz@...radead.org>,
"davem@...emloft.net" <davem@...emloft.net>
Subject: Re: [PATCH 3/3] udp: make use of static_key_slow_set_true() interface
On 06/28/2013 11:13 PM, Steven Rostedt wrote:
> On Fri, 2013-06-28 at 22:30 +0000, jbaron@...mai.com wrote:
>> Make use of the simpler API.
> Need to make the change log much more descriptive. Never assume someone
> in the future that looks up a change to this file will know about other
> commits that led to this. Each change log should be sufficient to stand
> on its own.
>
> Explain why this patch is needed. And it's not about the use of a
> simpler API.
>
> It actually fixes a real bug.
>
>
>> Signed-off-by: Jason Baron <jbaron@...mai.com>
>> ---
>> net/ipv4/udp.c | 9 ++++-----
>> net/ipv6/udp.c | 9 ++++-----
>> 2 files changed, 8 insertions(+), 10 deletions(-)
>>
>> diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c
>> index 0bf5d39..b8d0029 100644
>> --- a/net/ipv4/udp.c
>> +++ b/net/ipv4/udp.c
>> @@ -1421,11 +1421,10 @@ static int __udp_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
>>
>> }
>>
>> -static struct static_key udp_encap_needed __read_mostly;
>> +static struct static_key_boolean udp_encap_needed __read_mostly;
>> void udp_encap_enable(void)
>> {
>> - if (!static_key_enabled(&udp_encap_needed))
>> - static_key_slow_inc(&udp_encap_needed);
>> + static_key_slow_set_true(&udp_encap_needed);
>> }
>> EXPORT_SYMBOL(udp_encap_enable);
>>
>> @@ -1450,7 +1449,7 @@ int udp_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
>> goto drop;
>> nf_reset(skb);
>>
>> - if (static_key_false(&udp_encap_needed) && up->encap_type) {
>> + if (static_key_false(&udp_encap_needed.key) && up->encap_type) {
> I wonder if we should add a static_bool_key_false(), because that added
> ".key" is a bit confusing.
>
> -- Steve
>
Yeah - that is sort of ugly, but it avoids introducing a new branch API
call. That said, a 'static_bool_key_false()' would probably be a simple
wrapper function.
-Jason
>> int (*encap_rcv)(struct sock *sk, struct sk_buff *skb);
>>
>> /*
>> @@ -1773,7 +1772,7 @@ void udp_destroy_sock(struct sock *sk)
>> bool slow = lock_sock_fast(sk);
>> udp_flush_pending_frames(sk);
>> unlock_sock_fast(sk, slow);
>> - if (static_key_false(&udp_encap_needed) && up->encap_type) {
>> + if (static_key_false(&udp_encap_needed.key) && up->encap_type) {
>> void (*encap_destroy)(struct sock *sk);
>> encap_destroy = ACCESS_ONCE(up->encap_destroy);
>> if (encap_destroy)
>> diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c
>> index 42923b1..94a4091 100644
>> --- a/net/ipv6/udp.c
>> +++ b/net/ipv6/udp.c
>> @@ -573,11 +573,10 @@ static __inline__ void udpv6_err(struct sk_buff *skb,
>> __udp6_lib_err(skb, opt, type, code, offset, info, &udp_table);
>> }
>>
>> -static struct static_key udpv6_encap_needed __read_mostly;
>> +static struct static_key_boolean udpv6_encap_needed __read_mostly;
>> void udpv6_encap_enable(void)
>> {
>> - if (!static_key_enabled(&udpv6_encap_needed))
>> - static_key_slow_inc(&udpv6_encap_needed);
>> + static_key_slow_set_true(&udpv6_encap_needed);
>> }
>> EXPORT_SYMBOL(udpv6_encap_enable);
>>
>> @@ -590,7 +589,7 @@ int udpv6_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
>> if (!xfrm6_policy_check(sk, XFRM_POLICY_IN, skb))
>> goto drop;
>>
>> - if (static_key_false(&udpv6_encap_needed) && up->encap_type) {
>> + if (static_key_false(&udpv6_encap_needed.key) && up->encap_type) {
>> int (*encap_rcv)(struct sock *sk, struct sk_buff *skb);
>>
>> /*
>> @@ -1300,7 +1299,7 @@ void udpv6_destroy_sock(struct sock *sk)
>> udp_v6_flush_pending_frames(sk);
>> release_sock(sk);
>>
>> - if (static_key_false(&udpv6_encap_needed) && up->encap_type) {
>> + if (static_key_false(&udpv6_encap_needed.key) && up->encap_type) {
>> void (*encap_destroy)(struct sock *sk);
>> encap_destroy = ACCESS_ONCE(up->encap_destroy);
>> if (encap_destroy)
>
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists