Skip to content

Commit

Permalink
[SK_BUFF]: More skb_put related conversions to skb_reset_transport_he…
Browse files Browse the repository at this point in the history
…ader

This is similar to the skb_reset_network_header(), i.e. at the point we reset
the transport header pointer/offset skb->tail is equal to skb->data.

Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
  • Loading branch information
acmel authored and David S. Miller committed Apr 26, 2007
1 parent ac6d141 commit eeeb037
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 18 deletions.
19 changes: 9 additions & 10 deletions net/irda/af_irda.c
Original file line number Diff line number Diff line change
Expand Up @@ -1274,7 +1274,6 @@ static int irda_sendmsg(struct kiocb *iocb, struct socket *sock,
struct sock *sk = sock->sk;
struct irda_sock *self;
struct sk_buff *skb;
unsigned char *asmptr;
int err;

IRDA_DEBUG(4, "%s(), len=%zd\n", __FUNCTION__, len);
Expand Down Expand Up @@ -1317,9 +1316,9 @@ static int irda_sendmsg(struct kiocb *iocb, struct socket *sock,
return -ENOBUFS;

skb_reserve(skb, self->max_header_size + 16);

asmptr = skb->h.raw = skb_put(skb, len);
err = memcpy_fromiovec(asmptr, msg->msg_iov, len);
skb_reset_transport_header(skb);
skb_put(skb, len);
err = memcpy_fromiovec(skb_transport_header(skb), msg->msg_iov, len);
if (err) {
kfree_skb(skb);
return err;
Expand Down Expand Up @@ -1530,7 +1529,6 @@ static int irda_sendmsg_dgram(struct kiocb *iocb, struct socket *sock,
struct sock *sk = sock->sk;
struct irda_sock *self;
struct sk_buff *skb;
unsigned char *asmptr;
int err;

IRDA_DEBUG(4, "%s(), len=%zd\n", __FUNCTION__, len);
Expand Down Expand Up @@ -1566,10 +1564,11 @@ static int irda_sendmsg_dgram(struct kiocb *iocb, struct socket *sock,
return -ENOBUFS;

skb_reserve(skb, self->max_header_size);
skb_reset_transport_header(skb);

IRDA_DEBUG(4, "%s(), appending user data\n", __FUNCTION__);
asmptr = skb->h.raw = skb_put(skb, len);
err = memcpy_fromiovec(asmptr, msg->msg_iov, len);
skb_put(skb, len);
err = memcpy_fromiovec(skb_transport_header(skb), msg->msg_iov, len);
if (err) {
kfree_skb(skb);
return err;
Expand Down Expand Up @@ -1602,7 +1601,6 @@ static int irda_sendmsg_ultra(struct kiocb *iocb, struct socket *sock,
__u8 pid = 0;
int bound = 0;
struct sk_buff *skb;
unsigned char *asmptr;
int err;

IRDA_DEBUG(4, "%s(), len=%zd\n", __FUNCTION__, len);
Expand Down Expand Up @@ -1662,10 +1660,11 @@ static int irda_sendmsg_ultra(struct kiocb *iocb, struct socket *sock,
return -ENOBUFS;

skb_reserve(skb, self->max_header_size);
skb_reset_transport_header(skb);

IRDA_DEBUG(4, "%s(), appending user data\n", __FUNCTION__);
asmptr = skb->h.raw = skb_put(skb, len);
err = memcpy_fromiovec(asmptr, msg->msg_iov, len);
skb_put(skb, len);
err = memcpy_fromiovec(skb_transport_header(skb), msg->msg_iov, len);
if (err) {
kfree_skb(skb);
return err;
Expand Down
7 changes: 3 additions & 4 deletions net/netrom/af_netrom.c
Original file line number Diff line number Diff line change
Expand Up @@ -1074,6 +1074,7 @@ static int nr_sendmsg(struct kiocb *iocb, struct socket *sock,
goto out;

skb_reserve(skb, size - len);
skb_reset_transport_header(skb);

/*
* Push down the NET/ROM header
Expand All @@ -1094,14 +1095,12 @@ static int nr_sendmsg(struct kiocb *iocb, struct socket *sock,
/*
* Put the data on the end
*/
skb_put(skb, len);

skb->h.raw = skb_put(skb, len);

asmptr = skb->h.raw;
SOCK_DEBUG(sk, "NET/ROM: Appending user data\n");

/* User data follows immediately after the NET/ROM transport header */
if (memcpy_fromiovec(asmptr, msg->msg_iov, len)) {
if (memcpy_fromiovec(skb_transport_header(skb), msg->msg_iov, len)) {
kfree_skb(skb);
err = -EFAULT;
goto out;
Expand Down
5 changes: 3 additions & 2 deletions net/rose/af_rose.c
Original file line number Diff line number Diff line change
Expand Up @@ -1105,9 +1105,10 @@ static int rose_sendmsg(struct kiocb *iocb, struct socket *sock,
*/
SOCK_DEBUG(sk, "ROSE: Appending user data\n");

asmptr = skb->h.raw = skb_put(skb, len);
skb_reset_transport_header(skb);
skb_put(skb, len);

err = memcpy_fromiovec(asmptr, msg->msg_iov, len);
err = memcpy_fromiovec(skb_transport_header(skb), msg->msg_iov, len);
if (err) {
kfree_skb(skb);
return err;
Expand Down
5 changes: 3 additions & 2 deletions net/x25/af_x25.c
Original file line number Diff line number Diff line change
Expand Up @@ -1058,9 +1058,10 @@ static int x25_sendmsg(struct kiocb *iocb, struct socket *sock,
*/
SOCK_DEBUG(sk, "x25_sendmsg: Copying user data\n");

asmptr = skb->h.raw = skb_put(skb, len);
skb_reset_transport_header(skb);
skb_put(skb, len);

rc = memcpy_fromiovec(asmptr, msg->msg_iov, len);
rc = memcpy_fromiovec(skb_transport_header(skb), msg->msg_iov, len);
if (rc)
goto out_kfree_skb;

Expand Down

0 comments on commit eeeb037

Please sign in to comment.