Commit f9e69345 authored by Sebastiano Di Paola's avatar Sebastiano Di Paola Committed by David S. Miller

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: default avatarPaolo Abeni <paolo.abeni@gmail.com>
Signed-off-by: default avatarSebastiano Di Paola <sebastiano.dipaola@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 5d0932a5
...@@ -222,13 +222,13 @@ static void *packet_lookup_frame(struct packet_sock *po, unsigned int position, ...@@ -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); h.raw = po->pg_vec[pg_vec_pos] + (frame_offset * po->frame_size);
switch (po->tp_version) { switch (po->tp_version) {
case TPACKET_V1: case TPACKET_V1:
if (status != h.h1->tp_status ? TP_STATUS_USER : if (status != (h.h1->tp_status ? TP_STATUS_USER :
TP_STATUS_KERNEL) TP_STATUS_KERNEL))
return NULL; return NULL;
break; break;
case TPACKET_V2: case TPACKET_V2:
if (status != h.h2->tp_status ? TP_STATUS_USER : if (status != (h.h2->tp_status ? TP_STATUS_USER :
TP_STATUS_KERNEL) TP_STATUS_KERNEL))
return NULL; return NULL;
break; break;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment