From eedba6014d7ed2b6e20bb561b504a41f20aa3f46 Mon Sep 17 00:00:00 2001 From: "jwboyer@redhat.com" Date: Mon, 20 Feb 2012 15:34:34 -0500 Subject: [PATCH] --- yaml --- r: 289469 b: refs/heads/master c: 4898e07174b79013afd2b422ef6c4336ef8e6783 h: refs/heads/master i: 289467: 1d10bc18707218da6ab84451b636d367d2752f93 v: v3 --- [refs] | 2 +- trunk/drivers/usb/storage/realtek_cr.c | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index b45178936ab1..6f6faaa087d1 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 28c56ea1431421dec51b7b229369e991481453df +refs/heads/master: 4898e07174b79013afd2b422ef6c4336ef8e6783 diff --git a/trunk/drivers/usb/storage/realtek_cr.c b/trunk/drivers/usb/storage/realtek_cr.c index b1c2fe8b6dcd..84a4bc0cbee4 100644 --- a/trunk/drivers/usb/storage/realtek_cr.c +++ b/trunk/drivers/usb/storage/realtek_cr.c @@ -507,9 +507,14 @@ static int __do_config_autodelink(struct us_data *us, u8 *data, u16 len) { int retval; u8 cmnd[12] = {0}; + u8 *buf; US_DEBUGP("%s, addr = 0xfe47, len = %d\n", __FUNCTION__, len); + buf = kmemdup(data, len, GFP_NOIO); + if (!buf) + return USB_STOR_TRANSPORT_ERROR; + cmnd[0] = 0xF0; cmnd[1] = 0x0E; cmnd[2] = 0xfe; @@ -517,7 +522,8 @@ static int __do_config_autodelink(struct us_data *us, u8 *data, u16 len) cmnd[4] = (u8)(len >> 8); cmnd[5] = (u8)len; - retval = rts51x_bulk_transport_special(us, 0, cmnd, 12, data, len, DMA_TO_DEVICE, NULL); + retval = rts51x_bulk_transport_special(us, 0, cmnd, 12, buf, len, DMA_TO_DEVICE, NULL); + kfree(buf); if (retval != USB_STOR_TRANSPORT_GOOD) { return -EIO; }