USB: fix oops in usb_sg_init()
This patch (as1401) fixes a bug in usb_sg_init() that can cause an invalid pointer dereference. An inner loop reuses some local variables in an unsafe manner, so new variables are introduced. Signed-off-by: Alan Stern <stern@rowland.harvard.edu> Tested-by: Ajay Kumar Gupta <ajay.gupta@ti.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
3b49d2315c
commit
64d65872f9
@@ -416,8 +416,11 @@ int usb_sg_init(struct usb_sg_request *io, struct usb_device *dev,
|
|||||||
/* A length of zero means transfer the whole sg list */
|
/* A length of zero means transfer the whole sg list */
|
||||||
len = length;
|
len = length;
|
||||||
if (len == 0) {
|
if (len == 0) {
|
||||||
for_each_sg(sg, sg, nents, i)
|
struct scatterlist *sg2;
|
||||||
len += sg->length;
|
int j;
|
||||||
|
|
||||||
|
for_each_sg(sg, sg2, nents, j)
|
||||||
|
len += sg2->length;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/*
|
/*
|
||||||
|
Reference in New Issue
Block a user