From: Greg KH <gregkh@suse.de>
To: linux-kernel@vger.kernel.org, stable@kernel.org
Cc: Justin Forbes <jmforbes@linuxtx.org>,
Zwane Mwaikambo <zwane@arm.linux.org.uk>,
"Theodore Ts'o" <tytso@mit.edu>,
Randy Dunlap <rdunlap@xenotime.net>,
Dave Jones <davej@redhat.com>,
Chuck Wolber <chuckw@quantumlinux.com>,
torvalds@osdl.org, akpm@osdl.org, alan@lxorguk.ukuu.org.uk,
dsd@gentoo.org, oliver@neukum.org
Subject: [patch 05/26] USB: Adapt microtek driver to new scsi features
Date: Tue, 13 Dec 2005 00:22:25 -0800 [thread overview]
Message-ID: <20051213082225.GF5823@kroah.com> (raw)
In-Reply-To: <20051213082143.GA5823@kroah.com>
[-- Attachment #1: usb-adapt-microtek-driver-to-new-scsi-features.patch --]
[-- Type: text/plain, Size: 3654 bytes --]
-stable review patch. If anyone has any objections, please let us know.
------------------
From: Oliver Neukum <oliver@neukum.org>
[PATCH] USB: Adapt microtek driver to new scsi features
the scsi layer now uses very short sg lists. This breaks the microtek
driver. Here is a patch fixes this and some other issues.
Signed-off-by: Oliver Neukum <oliver@neukum.name>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
---
drivers/usb/image/microtek.c | 31 +++++++++++++++++++++++++------
drivers/usb/image/microtek.h | 2 +-
2 files changed, 26 insertions(+), 7 deletions(-)
--- linux-2.6.14.3.orig/drivers/usb/image/microtek.c
+++ linux-2.6.14.3/drivers/usb/image/microtek.c
@@ -327,6 +327,18 @@ static inline void mts_urb_abort(struct
usb_kill_urb( desc->urb );
}
+static int mts_slave_alloc (struct scsi_device *s)
+{
+ s->inquiry_len = 0x24;
+ return 0;
+}
+
+static int mts_slave_configure (struct scsi_device *s)
+{
+ blk_queue_dma_alignment(s->request_queue, (512 - 1));
+ return 0;
+}
+
static int mts_scsi_abort (Scsi_Cmnd *srb)
{
struct mts_desc* desc = (struct mts_desc*)(srb->device->host->hostdata[0]);
@@ -411,7 +423,7 @@ static void mts_transfer_done( struct ur
MTS_INT_INIT();
context->srb->result &= MTS_SCSI_ERR_MASK;
- context->srb->result |= (unsigned)context->status<<1;
+ context->srb->result |= (unsigned)(*context->scsi_status)<<1;
mts_transfer_cleanup(transfer);
@@ -427,7 +439,7 @@ static void mts_get_status( struct urb *
mts_int_submit_urb(transfer,
usb_rcvbulkpipe(context->instance->usb_dev,
context->instance->ep_response),
- &context->status,
+ context->scsi_status,
1,
mts_transfer_done );
}
@@ -481,7 +493,7 @@ static void mts_command_done( struct urb
context->data_pipe,
context->data,
context->data_length,
- context->srb->use_sg ? mts_do_sg : mts_data_done);
+ context->srb->use_sg > 1 ? mts_do_sg : mts_data_done);
} else {
mts_get_status(transfer);
}
@@ -627,7 +639,6 @@ int mts_scsi_queuecommand( Scsi_Cmnd *sr
callback(srb);
}
-
out:
return err;
}
@@ -645,6 +656,9 @@ static Scsi_Host_Template mts_scsi_host_
.cmd_per_lun = 1,
.use_clustering = 1,
.emulated = 1,
+ .slave_alloc = mts_slave_alloc,
+ .slave_configure = mts_slave_configure,
+ .max_sectors= 256, /* 128 K */
};
struct vendor_product
@@ -782,6 +796,10 @@ static int mts_usb_probe(struct usb_inte
if (!new_desc->urb)
goto out_kfree;
+ new_desc->context.scsi_status = kmalloc(1, GFP_KERNEL);
+ if (!new_desc->context.scsi_status)
+ goto out_kfree2;
+
new_desc->usb_dev = dev;
new_desc->usb_intf = intf;
init_MUTEX(&new_desc->lock);
@@ -818,6 +836,8 @@ static int mts_usb_probe(struct usb_inte
usb_set_intfdata(intf, new_desc);
return 0;
+ out_kfree2:
+ kfree(new_desc->context.scsi_status);
out_free_urb:
usb_free_urb(new_desc->urb);
out_kfree:
@@ -837,6 +857,7 @@ static void mts_usb_disconnect (struct u
scsi_host_put(desc->host);
usb_free_urb(desc->urb);
+ kfree(desc->context.scsi_status);
kfree(desc);
}
@@ -857,5 +878,3 @@ module_exit(microtek_drv_exit);
MODULE_AUTHOR( DRIVER_AUTHOR );
MODULE_DESCRIPTION( DRIVER_DESC );
MODULE_LICENSE("GPL");
-
-
--- linux-2.6.14.3.orig/drivers/usb/image/microtek.h
+++ linux-2.6.14.3/drivers/usb/image/microtek.h
@@ -22,7 +22,7 @@ struct mts_transfer_context
int data_pipe;
int fragment;
- u8 status; /* status returned from ep_response after command completion */
+ u8 *scsi_status; /* status returned from ep_response after command completion */
};
--
next prev parent reply other threads:[~2005-12-13 8:25 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20051213073430.558435000@press.kroah.org>
2005-12-13 8:21 ` [patch 00/26] - stable review Greg KH
2005-12-13 8:22 ` [patch 01/26] drivers/scsi/dpt_i2o.c: fix a user-after-free Greg KH
2005-12-13 8:22 ` [patch 02/26] drivers/message/i2o/pci.c: fix a use-after-free Greg KH
2005-12-13 8:22 ` [patch 03/26] drivers/infiniband/core/mad.c: " Greg KH
2005-12-13 8:22 ` [patch 04/26] Fix crash when ptrace poking hugepage areas Greg KH
2005-12-13 8:22 ` Greg KH [this message]
2005-12-13 8:22 ` [patch 06/26] setkeys needs root Greg KH
2005-12-13 8:22 ` [patch 07/26] [NETLINK]: Fix processing of fib_lookup netlink messages Greg KH
2005-12-13 8:22 ` [patch 08/26] Fix listxattr() for generic security attributes Greg KH
2005-12-13 8:22 ` [patch 09/26] DVB: BUDGET CI card depends on STV0297 demodulator Greg KH
2005-12-13 15:50 ` Daniel Drake
2005-12-13 18:12 ` [stable] " Greg KH
2005-12-13 8:22 ` [patch 10/26] ACPI: Prefer _CST over FADT for C-state capabilities Greg KH
2005-12-13 16:00 ` Daniel Drake
2005-12-13 18:11 ` [stable] " Greg KH
2005-12-13 8:22 ` [patch 11/26] ACPI: fix HP nx8220 boot hang regression Greg KH
2005-12-13 8:22 ` [patch 12/26] ACPI: Add support for FADT P_LVL2_UP flag Greg KH
2005-12-13 8:23 ` [patch 13/26] 32bit integer overflow in invalidate_inode_pages2() Greg KH
2005-12-13 8:23 ` [patch 14/26] V4L/DVB (3135) Fix tuner init for Pinnacle PCTV Stereo Greg KH
2005-12-13 8:23 ` [patch 15/26] V4L/DVB: Fix analog NTSC for Thomson DTT 761X hybrid tuner Greg KH
2005-12-13 8:23 ` [patch 17/26] i82365: release all resources if no devices are found Greg KH
2005-12-13 8:23 ` [patch 18/26] [AGPGART] Fix serverworks TLB flush Greg KH
2005-12-13 8:23 ` [patch 19/26] bonding: fix feature consolidation Greg KH
2005-12-13 8:23 ` [patch 20/26] [BRIDGE]: recompute features when adding a new device Greg KH
2005-12-13 8:23 ` [patch 16/26] [ALSA] nm256: reset workaround for Latitude CSx Greg KH
2005-12-13 8:23 ` [patch 21/26] [libata] locking rewrite (== fix) Greg KH
2005-12-13 8:23 ` [patch 22/26] I8K: fix /proc reporting of blank service tags Greg KH
2005-12-13 8:23 ` [patch 23/26] ide-floppy: software eject not working with LS-120 drive Greg KH
2005-12-13 8:23 ` [patch 24/26] - stable review cciss: bug fix for hpacucli Greg KH
2005-12-13 8:23 ` [patch 25/26] cciss: bug fix for BIG_PASS_THRU Greg KH
2005-12-13 8:24 ` [patch 26/26] Add try_to_freeze to kauditd Greg KH
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20051213082225.GF5823@kroah.com \
--to=gregkh@suse.de \
--cc=akpm@osdl.org \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=chuckw@quantumlinux.com \
--cc=davej@redhat.com \
--cc=dsd@gentoo.org \
--cc=jmforbes@linuxtx.org \
--cc=linux-kernel@vger.kernel.org \
--cc=oliver@neukum.org \
--cc=rdunlap@xenotime.net \
--cc=stable@kernel.org \
--cc=torvalds@osdl.org \
--cc=tytso@mit.edu \
--cc=zwane@arm.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox