]> git.hungrycats.org Git - linux/commitdiff
[IRDA]: Check error return from memcpy_fromiovec()
authorChris Wright <chrisw@osdl.org>
Mon, 19 Jan 2004 13:18:47 +0000 (05:18 -0800)
committerDavid S. Miller <davem@nuts.ninka.net>
Mon, 19 Jan 2004 13:18:47 +0000 (05:18 -0800)
net/irda/af_irda.c

index 86bc800c26e0e5b3e0a912a88ea97246c3d22992..4acddaa7726d03f611fb2054b1fc8392785b4a64 100644 (file)
@@ -1307,7 +1307,11 @@ static int irda_sendmsg(struct kiocb *iocb, struct socket *sock,
        skb_reserve(skb, self->max_header_size + 16);
 
        asmptr = skb->h.raw = skb_put(skb, len);
-       memcpy_fromiovec(asmptr, msg->msg_iov, len);
+       err = memcpy_fromiovec(asmptr, msg->msg_iov, len);
+       if (err) {
+               kfree_skb(skb);
+               return err;
+       }
 
        /*
         * Just send the message to TinyTP, and let it deal with possible
@@ -1550,7 +1554,11 @@ static int irda_sendmsg_dgram(struct kiocb *iocb, struct socket *sock,
 
        IRDA_DEBUG(4, "%s(), appending user data\n", __FUNCTION__);
        asmptr = skb->h.raw = skb_put(skb, len);
-       memcpy_fromiovec(asmptr, msg->msg_iov, len);
+       err = memcpy_fromiovec(asmptr, msg->msg_iov, len);
+       if (err) {
+               kfree_skb(skb);
+               return err;
+       }
 
        /*
         * Just send the message to TinyTP, and let it deal with possible
@@ -1613,7 +1621,11 @@ static int irda_sendmsg_ultra(struct kiocb *iocb, struct socket *sock,
 
        IRDA_DEBUG(4, "%s(), appending user data\n", __FUNCTION__);
        asmptr = skb->h.raw = skb_put(skb, len);
-       memcpy_fromiovec(asmptr, msg->msg_iov, len);
+       err = memcpy_fromiovec(asmptr, msg->msg_iov, len);
+       if (err) {
+               kfree_skb(skb);
+               return err;
+       }
 
        err = irlmp_connless_data_request(self->lsap, skb);
        if (err) {