diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-09-14 13:37:28 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-09-14 13:37:28 -0400 |
commit | d7e9660ad9d5e0845f52848bce31bcf5cdcdea6b (patch) | |
tree | c6c67d145771187b194d79d603742b31090a59d6 /net/unix/af_unix.c | |
parent | b8cb48aae1b8c50b37dcb7710363aa69a7a0d9ca (diff) | |
parent | 13af7a6ea502fcdd4c0e3d7de6e332b102309491 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6: (1623 commits)
netxen: update copyright
netxen: fix tx timeout recovery
netxen: fix file firmware leak
netxen: improve pci memory access
netxen: change firmware write size
tg3: Fix return ring size breakage
netxen: build fix for INET=n
cdc-phonet: autoconfigure Phonet address
Phonet: back-end for autoconfigured addresses
Phonet: fix netlink address dump error handling
ipv6: Add IFA_F_DADFAILED flag
net: Add DEVTYPE support for Ethernet based devices
mv643xx_eth.c: remove unused txq_set_wrr()
ucc_geth: Fix hangs after switching from full to half duplex
ucc_geth: Rearrange some code to avoid forward declarations
phy/marvell: Make non-aneg speed/duplex forcing work for 88E1111 PHYs
drivers/net/phy: introduce missing kfree
drivers/net/wan: introduce missing kfree
net: force bridge module(s) to be GPL
Subject: [PATCH] appletalk: Fix skb leak when ipddp interface is not loaded
...
Fixed up trivial conflicts:
- arch/x86/include/asm/socket.h
converted to <asm-generic/socket.h> in the x86 tree. The generic
header has the same new #define's, so that works out fine.
- drivers/net/tun.c
fix conflict between 89f56d1e9 ("tun: reuse struct sock fields") that
switched over to using 'tun->socket.sk' instead of the redundantly
available (and thus removed) 'tun->sk', and 2b980dbd ("lsm: Add hooks
to the TUN driver") which added a new 'tun->sk' use.
Noted in 'next' by Stephen Rothwell.
Diffstat (limited to 'net/unix/af_unix.c')
-rw-r--r-- | net/unix/af_unix.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c index fc3ebb906911..51ab497115eb 100644 --- a/net/unix/af_unix.c +++ b/net/unix/af_unix.c | |||
@@ -1501,6 +1501,7 @@ static int unix_stream_sendmsg(struct kiocb *kiocb, struct socket *sock, | |||
1501 | struct sk_buff *skb; | 1501 | struct sk_buff *skb; |
1502 | int sent = 0; | 1502 | int sent = 0; |
1503 | struct scm_cookie tmp_scm; | 1503 | struct scm_cookie tmp_scm; |
1504 | bool fds_sent = false; | ||
1504 | 1505 | ||
1505 | if (NULL == siocb->scm) | 1506 | if (NULL == siocb->scm) |
1506 | siocb->scm = &tmp_scm; | 1507 | siocb->scm = &tmp_scm; |
@@ -1562,12 +1563,14 @@ static int unix_stream_sendmsg(struct kiocb *kiocb, struct socket *sock, | |||
1562 | size = min_t(int, size, skb_tailroom(skb)); | 1563 | size = min_t(int, size, skb_tailroom(skb)); |
1563 | 1564 | ||
1564 | memcpy(UNIXCREDS(skb), &siocb->scm->creds, sizeof(struct ucred)); | 1565 | memcpy(UNIXCREDS(skb), &siocb->scm->creds, sizeof(struct ucred)); |
1565 | if (siocb->scm->fp) { | 1566 | /* Only send the fds in the first buffer */ |
1567 | if (siocb->scm->fp && !fds_sent) { | ||
1566 | err = unix_attach_fds(siocb->scm, skb); | 1568 | err = unix_attach_fds(siocb->scm, skb); |
1567 | if (err) { | 1569 | if (err) { |
1568 | kfree_skb(skb); | 1570 | kfree_skb(skb); |
1569 | goto out_err; | 1571 | goto out_err; |
1570 | } | 1572 | } |
1573 | fds_sent = true; | ||
1571 | } | 1574 | } |
1572 | 1575 | ||
1573 | err = memcpy_fromiovec(skb_put(skb, size), msg->msg_iov, size); | 1576 | err = memcpy_fromiovec(skb_put(skb, size), msg->msg_iov, size); |