|
@@ -715,7 +715,7 @@ static int llc_ui_recvmsg(struct kiocb *iocb, struct socket *sock,
|
|
|
unsigned long cpu_flags;
|
|
|
size_t copied = 0;
|
|
|
u32 peek_seq = 0;
|
|
|
- u32 *seq;
|
|
|
+ u32 *seq, skb_len;
|
|
|
unsigned long used;
|
|
|
int target; /* Read at least this many bytes */
|
|
|
long timeo;
|
|
@@ -812,6 +812,7 @@ static int llc_ui_recvmsg(struct kiocb *iocb, struct socket *sock,
|
|
|
}
|
|
|
continue;
|
|
|
found_ok_skb:
|
|
|
+ skb_len = skb->len;
|
|
|
/* Ok so how much can we use? */
|
|
|
used = skb->len - offset;
|
|
|
if (len < used)
|
|
@@ -844,7 +845,7 @@ static int llc_ui_recvmsg(struct kiocb *iocb, struct socket *sock,
|
|
|
}
|
|
|
|
|
|
/* Partial read */
|
|
|
- if (used + offset < skb->len)
|
|
|
+ if (used + offset < skb_len)
|
|
|
continue;
|
|
|
} while (len > 0);
|
|
|
|