Merge branch 'work.misc-set_fs' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux-2.6-block.git] / drivers / isdn / i4l / isdn_ppp.c
index 487478bafaf5c3190f96cba4e8f69e1eb43dad3a..6c44609fd83a0f266df74b80bbe91f84b3bd4a67 100644 (file)
@@ -1309,7 +1309,7 @@ isdn_ppp_xmit(struct sk_buff *skb, struct net_device *netdev)
        /* check if we should pass this packet
         * the filter instructions are constructed assuming
         * a four-byte PPP header on each packet */
-       *skb_push(skb, 4) = 1; /* indicate outbound */
+       *(u8 *)skb_push(skb, 4) = 1; /* indicate outbound */
 
        {
                __be16 *p = (__be16 *)skb->data;
@@ -1506,7 +1506,7 @@ int isdn_ppp_autodial_filter(struct sk_buff *skb, isdn_net_local *lp)
         * temporarily remove part of the fake header stuck on
         * earlier.
         */
-       *skb_pull(skb, IPPP_MAX_HEADER - 4) = 1; /* indicate outbound */
+       *(u8 *)skb_pull(skb, IPPP_MAX_HEADER - 4) = 1; /* indicate outbound */
 
        {
                __be16 *p = (__be16 *)skb->data;
@@ -2252,8 +2252,7 @@ static void isdn_ppp_ccp_xmit_reset(struct ippp_struct *is, int proto,
 
        /* Now stuff remaining bytes */
        if (len) {
-               p = skb_put(skb, len);
-               memcpy(p, data, len);
+               skb_put_data(skb, data, len);
        }
 
        /* skb is now ready for xmit */
@@ -2358,7 +2357,7 @@ static struct ippp_ccp_reset_state *isdn_ppp_ccp_reset_alloc_state(struct ippp_s
                       id);
                return NULL;
        } else {
-               rs = kzalloc(sizeof(struct ippp_ccp_reset_state), GFP_KERNEL);
+               rs = kzalloc(sizeof(struct ippp_ccp_reset_state), GFP_ATOMIC);
                if (!rs)
                        return NULL;
                rs->state = CCPResetIdle;