summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastiano Di Paola <sebastiano.dipaola@gmail.com>2009-01-30 23:37:17 +0000
committerGreg Kroah-Hartman <gregkh@suse.de>2009-02-17 09:28:55 -0800
commit3cb569832d1b79a60b5df1b510c1712aa76e7cdd (patch)
tree7329fb2d1843ac89c5bdbcb3caa881d8f34b2b56
parentd6283a8094509991b9d72ec8cdea1d6236dd09c6 (diff)
net: packet socket packet_lookup_frame fix
[ Upstream commit f9e6934502e46c363100245f137ddf0f4b1cb574 ] packet_lookup_frames() fails to get user frame if current frame header status contains extra flags. This is due to the wrong assumption on the operators precedence during frame status tests. Fixed by forcing the right operators precedence order with explicit brackets. Signed-off-by: Paolo Abeni <paolo.abeni@gmail.com> Signed-off-by: Sebastiano Di Paola <sebastiano.dipaola@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r--net/packet/af_packet.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c
index c718e7e3f7de..1789f6cf1cbe 100644
--- a/net/packet/af_packet.c
+++ b/net/packet/af_packet.c
@@ -220,13 +220,13 @@ static void *packet_lookup_frame(struct packet_sock *po, unsigned int position,
h.raw = po->pg_vec[pg_vec_pos] + (frame_offset * po->frame_size);
switch (po->tp_version) {
case TPACKET_V1:
- if (status != h.h1->tp_status ? TP_STATUS_USER :
- TP_STATUS_KERNEL)
+ if (status != (h.h1->tp_status ? TP_STATUS_USER :
+ TP_STATUS_KERNEL))
return NULL;
break;
case TPACKET_V2:
- if (status != h.h2->tp_status ? TP_STATUS_USER :
- TP_STATUS_KERNEL)
+ if (status != (h.h2->tp_status ? TP_STATUS_USER :
+ TP_STATUS_KERNEL))
return NULL;
break;
}