[SCSI] iscsi: handle nonlinear skbs
From: zhenyu.z.wang@intel.com Fix oops from nonlinear skb usage. Signed-off-by: Alex Aizman <itn780@yahoo.com> Signed-off-by: Dmitry Yusupov <dmitry_yus@yahoo.com> Signed-off-by: Mike Christie <michaelc@cs.wisc.edu> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
This commit is contained in:
parent
af973481f4
commit
bb05234979
|
@ -1061,7 +1061,6 @@ iscsi_tcp_data_recv(read_descriptor_t *rd_desc, struct sk_buff *skb,
|
||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
||||||
struct iscsi_conn *conn = rd_desc->arg.data;
|
struct iscsi_conn *conn = rd_desc->arg.data;
|
||||||
int start = skb_headlen(skb);
|
|
||||||
int processed;
|
int processed;
|
||||||
char pad[ISCSI_PAD_LEN];
|
char pad[ISCSI_PAD_LEN];
|
||||||
struct scatterlist sg;
|
struct scatterlist sg;
|
||||||
|
@ -1070,7 +1069,7 @@ iscsi_tcp_data_recv(read_descriptor_t *rd_desc, struct sk_buff *skb,
|
||||||
* Save current SKB and its offset in the corresponding
|
* Save current SKB and its offset in the corresponding
|
||||||
* connection context.
|
* connection context.
|
||||||
*/
|
*/
|
||||||
conn->in.copy = start - offset;
|
conn->in.copy = skb->len - offset;
|
||||||
conn->in.offset = offset;
|
conn->in.offset = offset;
|
||||||
conn->in.skb = skb;
|
conn->in.skb = skb;
|
||||||
conn->in.len = conn->in.copy;
|
conn->in.len = conn->in.copy;
|
||||||
|
|
Loading…
Reference in New Issue