Question regarding strange-looking code in drivers/isdn/i4l/isdn_ppp.c

Bas Peters baspeters93 at gmail.com
Mon Feb 2 14:36:59 EST 2015


Alright, that makes sense. Is it bad practice to do so? Would it make
sense to change this to improve readability?

2015-02-02 20:34 GMT+01:00 Jeff Haran <Jeff.Haran at citrix.com>:
>> -----Original Message-----
>> From: kernelnewbies-bounces at kernelnewbies.org [mailto:kernelnewbies-
>> bounces at kernelnewbies.org] On Behalf Of Bas Peters
>> Sent: Monday, February 02, 2015 11:26 AM
>> To: kernelnewbies at kernelnewbies.org; isdn at linux-pingi.de
>> Subject: Question regarding strange-looking code in drivers/isdn/i4l/isdn_ppp.c
>>
>> Hi,
>>
>> I was checking some code in drivers/isdn/isdn_pp and came across the
>> following:
>>
>>       case PPP_VJC_COMP:
>>               if (is->debug & 0x20)
>>                       printk(KERN_DEBUG "isdn_ppp: VJC_COMP\n");
>>               {
>>                       struct sk_buff *skb_old = skb;
>>                       int pkt_len;
>>                       skb = dev_alloc_skb(skb_old->len + 128);
>>
>>                       if (!skb) {
>>                               printk(KERN_WARNING "%s: Memory squeeze,
>> dropping packet.\n", dev->name);
>>                               skb = skb_old;
>>                               goto drop_packet;
>>                       }
>>                       skb_put(skb, skb_old->len + 128);
>>                       skb_copy_from_linear_data(skb_old, skb->data,
>>                                                 skb_old->len);
>>                       if (net_dev->local->ppp_slot < 0) {
>>                               printk(KERN_ERR "%s: net_dev->local-
>> >ppp_slot(%d) out of range\n",
>>                                      __func__, net_dev->local->ppp_slot);
>>                               goto drop_packet;
>>                       }
>>                       pkt_len = slhc_uncompress(ippp_table[net_dev->local-
>> >ppp_slot]->slcomp,
>>                                                 skb->data, skb_old->len);
>>                       kfree_skb(skb_old);
>>                       if (pkt_len < 0)
>>                               goto drop_packet;
>>
>>                       skb_trim(skb, pkt_len);
>>                       skb->protocol = htons(ETH_P_IP);
>>               }
>>               break;
>>
>> Could you explain to me why there are braces AFTER the printk invocation?
>> Was it perhaps intended that the printk was included in the braces?
>>
>> I'm sorry if I'm missing something completely obvious here, but it seems kind of
>> strange to me.
>>
>> With kind regards,
>>
>> Bas
>
> I assume it's just to introduce a new name space scope inside the case statement without going to the trouble of writing a new function that would be called from it.
>
> Jeff Haran
>



More information about the Kernelnewbies mailing list