Question regarding strange-looking code in drivers/isdn/i4l/isdn_ppp.c
Greg KH
greg at kroah.com
Mon Feb 2 14:35:49 EST 2015
On Mon, Feb 02, 2015 at 08:26:26PM +0100, Bas Peters wrote:
> 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?
Nope, the printk is for a debugging flag.
The braces afterward is for the new variable scope, it's odd looking
yes, but correct code and formatting.
Hope this helps,
greg k-h
More information about the Kernelnewbies
mailing list