summaryrefslogtreecommitdiffstats
path: root/net/packet
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2012-01-09 16:14:07 +0000
committerArnd Bergmann <arnd@arndb.de>2012-01-09 16:14:07 +0000
commit142f2101a86ade2d6c9dfbedf82e1b5b31c8fce6 (patch)
tree8cced517382b7087df4e89a9e2a00ccac9676a92 /net/packet
parent155bc27fdfbdf65a07a4f8ef3eafa25e57d8b511 (diff)
parenta07613a54d700a974f3a4a657da78ef5d097315d (diff)
downloadop-kernel-dev-142f2101a86ade2d6c9dfbedf82e1b5b31c8fce6.zip
op-kernel-dev-142f2101a86ade2d6c9dfbedf82e1b5b31c8fce6.tar.gz
Merge branch 'samsung/cleanup' into samsung/driver
Conflicts: arch/arm/mach-s5p64x0/cpu.c -> common.c More changes to a file that got moved into common.c, see previous conflict resolutions. Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Diffstat (limited to 'net/packet')
-rw-r--r--net/packet/af_packet.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c
index 82a6f34..d9d4970 100644
--- a/net/packet/af_packet.c
+++ b/net/packet/af_packet.c
@@ -1630,8 +1630,7 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev,
if (snaplen > res)
snaplen = res;
- if (atomic_read(&sk->sk_rmem_alloc) + skb->truesize >=
- (unsigned)sk->sk_rcvbuf)
+ if (atomic_read(&sk->sk_rmem_alloc) >= sk->sk_rcvbuf)
goto drop_n_acct;
if (skb_shared(skb)) {
@@ -1762,8 +1761,7 @@ static int tpacket_rcv(struct sk_buff *skb, struct net_device *dev,
if (po->tp_version <= TPACKET_V2) {
if (macoff + snaplen > po->rx_ring.frame_size) {
if (po->copy_thresh &&
- atomic_read(&sk->sk_rmem_alloc) + skb->truesize
- < (unsigned)sk->sk_rcvbuf) {
+ atomic_read(&sk->sk_rmem_alloc) < sk->sk_rcvbuf) {
if (skb_shared(skb)) {
copy_skb = skb_clone(skb, GFP_ATOMIC);
} else {
@@ -2450,8 +2448,12 @@ static int packet_do_bind(struct sock *sk, struct net_device *dev, __be16 protoc
{
struct packet_sock *po = pkt_sk(sk);
- if (po->fanout)
+ if (po->fanout) {
+ if (dev)
+ dev_put(dev);
+
return -EINVAL;
+ }
lock_sock(sk);
OpenPOWER on IntegriCloud