diff options
Diffstat (limited to 'drivers/net/ppp/ppp_generic.c')
| -rw-r--r-- | drivers/net/ppp/ppp_generic.c | 34 | 
1 files changed, 18 insertions, 16 deletions
| diff --git a/drivers/net/ppp/ppp_generic.c b/drivers/net/ppp/ppp_generic.c index f9c0e62716ea..13028833bee3 100644 --- a/drivers/net/ppp/ppp_generic.c +++ b/drivers/net/ppp/ppp_generic.c @@ -1061,7 +1061,8 @@ static const struct nla_policy ppp_nl_policy[IFLA_PPP_MAX + 1] = {  	[IFLA_PPP_DEV_FD]	= { .type = NLA_S32 },  }; -static int ppp_nl_validate(struct nlattr *tb[], struct nlattr *data[]) +static int ppp_nl_validate(struct nlattr *tb[], struct nlattr *data[], +			   struct netlink_ext_ack *extack)  {  	if (!data)  		return -EINVAL; @@ -1075,7 +1076,8 @@ static int ppp_nl_validate(struct nlattr *tb[], struct nlattr *data[])  }  static int ppp_nl_newlink(struct net *src_net, struct net_device *dev, -			  struct nlattr *tb[], struct nlattr *data[]) +			  struct nlattr *tb[], struct nlattr *data[], +			  struct netlink_ext_ack *extack)  {  	struct ppp_config conf = {  		.unit = -1, @@ -1490,7 +1492,7 @@ ppp_send_frame(struct ppp *ppp, struct sk_buff *skb)  		/* check if we should pass this packet */  		/* the filter instructions are constructed assuming  		   a four-byte PPP header on each packet */ -		*skb_push(skb, 2) = 1; +		*(u8 *)skb_push(skb, 2) = 1;  		if (ppp->pass_filter &&  		    BPF_PROG_RUN(ppp->pass_filter, skb) == 0) {  			if (ppp->debug & 1) @@ -1618,7 +1620,7 @@ ppp_push(struct ppp *ppp)  		list = list->next;  		pch = list_entry(list, struct channel, clist); -		spin_lock_bh(&pch->downl); +		spin_lock(&pch->downl);  		if (pch->chan) {  			if (pch->chan->ops->start_xmit(pch->chan, skb))  				ppp->xmit_pending = NULL; @@ -1627,7 +1629,7 @@ ppp_push(struct ppp *ppp)  			kfree_skb(skb);  			ppp->xmit_pending = NULL;  		} -		spin_unlock_bh(&pch->downl); +		spin_unlock(&pch->downl);  		return;  	} @@ -1757,7 +1759,7 @@ static int ppp_mp_explode(struct ppp *ppp, struct sk_buff *skb)  		}  		/* check the channel's mtu and whether it is still attached. */ -		spin_lock_bh(&pch->downl); +		spin_lock(&pch->downl);  		if (pch->chan == NULL) {  			/* can't use this channel, it's being deregistered */  			if (pch->speed == 0) @@ -1765,7 +1767,7 @@ static int ppp_mp_explode(struct ppp *ppp, struct sk_buff *skb)  			else  				totspeed -= pch->speed; -			spin_unlock_bh(&pch->downl); +			spin_unlock(&pch->downl);  			pch->avail = 0;  			totlen = len;  			totfree--; @@ -1816,7 +1818,7 @@ static int ppp_mp_explode(struct ppp *ppp, struct sk_buff *skb)  		 */  		if (flen <= 0) {  			pch->avail = 2; -			spin_unlock_bh(&pch->downl); +			spin_unlock(&pch->downl);  			continue;  		} @@ -1861,14 +1863,14 @@ static int ppp_mp_explode(struct ppp *ppp, struct sk_buff *skb)  		len -= flen;  		++ppp->nxseq;  		bits = 0; -		spin_unlock_bh(&pch->downl); +		spin_unlock(&pch->downl);  	}  	ppp->nxchan = i;  	return 1;   noskb: -	spin_unlock_bh(&pch->downl); +	spin_unlock(&pch->downl);  	if (ppp->debug & 1)  		netdev_err(ppp->dev, "PPP: no memory (fragment)\n");  	++ppp->dev->stats.tx_errors; @@ -1883,7 +1885,7 @@ static void __ppp_channel_push(struct channel *pch)  	struct sk_buff *skb;  	struct ppp *ppp; -	spin_lock_bh(&pch->downl); +	spin_lock(&pch->downl);  	if (pch->chan) {  		while (!skb_queue_empty(&pch->file.xq)) {  			skb = skb_dequeue(&pch->file.xq); @@ -1897,14 +1899,14 @@ static void __ppp_channel_push(struct channel *pch)  		/* channel got deregistered */  		skb_queue_purge(&pch->file.xq);  	} -	spin_unlock_bh(&pch->downl); +	spin_unlock(&pch->downl);  	/* see if there is anything from the attached unit to be sent */  	if (skb_queue_empty(&pch->file.xq)) { -		read_lock_bh(&pch->upl); +		read_lock(&pch->upl);  		ppp = pch->ppp;  		if (ppp)  			__ppp_xmit_process(ppp); -		read_unlock_bh(&pch->upl); +		read_unlock(&pch->upl);  	}  } @@ -2133,7 +2135,7 @@ ppp_receive_nonmp_frame(struct ppp *ppp, struct sk_buff *skb)  			if (skb_unclone(skb, GFP_ATOMIC))  				goto err; -			*skb_push(skb, 2) = 0; +			*(u8 *)skb_push(skb, 2) = 0;  			if (ppp->pass_filter &&  			    BPF_PROG_RUN(ppp->pass_filter, skb) == 0) {  				if (ppp->debug & 1) @@ -2267,7 +2269,7 @@ ppp_receive_mp_frame(struct ppp *ppp, struct sk_buff *skb, struct channel *pch)  	 * Do protocol ID decompression on the first fragment of each packet.  	 */  	if ((PPP_MP_CB(skb)->BEbits & B) && (skb->data[0] & 1)) -		*skb_push(skb, 1) = 0; +		*(u8 *)skb_push(skb, 1) = 0;  	/*  	 * Expand sequence number to 32 bits, making it as close | 
