]> Pileus Git - ~andy/linux/blobdiff - net/can/raw.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
[~andy/linux] / net / can / raw.c
index 5b0e3e330d97c6f4172bf52db70a4cee6b7f4247..c1764e41ddaf924fed4e31972b938a84bb87b6f7 100644 (file)
@@ -50,6 +50,7 @@
 #include <linux/skbuff.h>
 #include <linux/can.h>
 #include <linux/can/core.h>
+#include <linux/can/skb.h>
 #include <linux/can/raw.h>
 #include <net/sock.h>
 #include <net/net_namespace.h>
@@ -699,11 +700,14 @@ static int raw_sendmsg(struct kiocb *iocb, struct socket *sock,
        if (!dev)
                return -ENXIO;
 
-       skb = sock_alloc_send_skb(sk, size, msg->msg_flags & MSG_DONTWAIT,
-                                 &err);
+       skb = sock_alloc_send_skb(sk, size + sizeof(struct can_skb_priv),
+                                 msg->msg_flags & MSG_DONTWAIT, &err);
        if (!skb)
                goto put_dev;
 
+       can_skb_reserve(skb);
+       can_skb_prv(skb)->ifindex = dev->ifindex;
+
        err = memcpy_fromiovec(skb_put(skb, size), msg->msg_iov, size);
        if (err < 0)
                goto free_skb;