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