lkml.org 
[lkml]   [2013]   [Jul]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [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@akamai.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@akamai.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)
>



\
 
 \ /
  Last update: 2013-07-01 07:01    [W:0.057 / U:0.116 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site