rose: limit sk_filter trim to payload
[pandora-kernel.git] / net / rose / rose_in.c
index 8348d33..e5029c5 100644 (file)
@@ -16,7 +16,6 @@
 #include <linux/socket.h>
 #include <linux/in.h>
 #include <linux/kernel.h>
-#include <linux/sched.h>
 #include <linux/timer.h>
 #include <linux/string.h>
 #include <linux/sockios.h>
@@ -166,7 +165,8 @@ static int rose_state3_machine(struct sock *sk, struct sk_buff *skb, int framety
                rose_frames_acked(sk, nr);
                if (ns == rose->vr) {
                        rose_start_idletimer(sk);
-                       if (sock_queue_rcv_skb(sk, skb) == 0) {
+                       if (sk_filter_trim_cap(sk, skb, ROSE_MIN_LEN) == 0 &&
+                           __sock_queue_rcv_skb(sk, skb) == 0) {
                                rose->vr = (rose->vr + 1) % ROSE_MODULUS;
                                queued = 1;
                        } else {
@@ -183,7 +183,7 @@ static int rose_state3_machine(struct sock *sk, struct sk_buff *skb, int framety
                                break;
                        }
                        if (atomic_read(&sk->sk_rmem_alloc) >
-                           (sk->sk_rcvbuf / 2))
+                           (sk->sk_rcvbuf >> 1))
                                rose->condition |= ROSE_COND_OWN_RX_BUSY;
                }
                /*