summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastiano Di Paola <sebastiano.dipaola@gmail.com>2009-01-30 23:37:17 +0000
committerDavid S. Miller <davem@davemloft.net>2009-02-01 01:53:29 -0800
commitf9e6934502e46c363100245f137ddf0f4b1cb574 (patch)
treec7de02a8257cccc92dc1eef77dee19c8753a0b6e
parent5d0932a5dd00d83df5d1e15eeffb6edf015a8579 (diff)
downloadlinux-f9e6934502e46c363100245f137ddf0f4b1cb574.tar.gz
linux-f9e6934502e46c363100245f137ddf0f4b1cb574.tar.bz2
linux-f9e6934502e46c363100245f137ddf0f4b1cb574.zip
net: packet socket packet_lookup_frame fix
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>
-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 9454d4ae46df..1fc4a7885c41 100644
--- a/net/packet/af_packet.c
+++ b/net/packet/af_packet.c
@@ -222,13 +222,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;
}