Re: [patch 2/6] scsi/sr: add no_read_disc_info scsi_device flag

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Aug 11, 2010 at 12:02:57PM -0400, James Bottomley wrote:
> On Wed, 2010-08-11 at 08:46 -0700, Greg KH wrote:
> > On Wed, Aug 11, 2010 at 07:46:11AM -0400, James Bottomley wrote:
> > > On Tue, 2010-08-10 at 15:15 -0700, Greg KH wrote:
> > > > On Tue, Aug 10, 2010 at 02:56:47PM -0700, Greg KH wrote:
> > > > > On Tue, Aug 10, 2010 at 02:29:20PM -0700, akpm@xxxxxxxxxxxxxxxxxxxx wrote:
> > > > > > From: Hans de Goede <hdegoede@xxxxxxxxxx>
> > > > > > 
> > > > > > Some USB devices emulate a usb-mass-storage attached (scsi) cdrom device,
> > > > > > usually this fake cdrom contains the windows software for the device. 
> > > > > > While working on supporting Appotech ax3003 based photoframes, which do
> > > > > > this I discovered that they will go of into lala land when ever they see a
> > > > > > READ_DISC_INFO scsi command.
> > > > > > 
> > > > > > Thus this patch adds a scsi_device flag (which can then be set by the
> > > > > > usb-storage driver through an unsual-devs entry), to indicate this, and
> > > > > > makes the sr driver honor this flag.
> > > > > > 
> > > > > > I know this sucks, but as discussed on linux-scsi list there is no other
> > > > > > way to make this device work properly.
> > > > > > 
> > > > > > Looking at usb traces made under windows, windows never sends a
> > > > > > READ_DISC_INFO during normal interactions with a usb cdrom device.  So as
> > > > > > this cdrom emulation thingie becomes more common we might see more of this
> > > > > > problem.
> > > > > > 
> > > > > > Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx>
> > > > > > Cc: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx>
> > > > > > Cc: Greg KH <greg@xxxxxxxxx>
> > > > > > Cc: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx>
> > > > > > Cc: Matthew Dharm <mdharm-usb@xxxxxxxxxxxxxxxxxx>
> > > > > > Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
> > > > > > ---
> > > > > > 
> > > > > >  drivers/scsi/sr.c          |    8 +++++++-
> > > > > >  include/scsi/scsi_device.h |    1 +
> > > > > 
> > > > > I can't take this one (and the other scsi-only one), unless James acks
> > > > > it.  If so, I'll be glad to do so.
> > > > > 
> > > > > James?
> > > > 
> > > > Hm, how about the other way around.  I'll go queue them up in my tree
> > > > tomorrow unless you NACK them, which seems to be a bit easier for
> > > > everyone involved given that you are at LinuxCon this week.
> > > 
> > > Well, what's the status from the USB side?  Discussion (not entirely
> > > surprisingly) when quiet just after the merge window opened.
> > > 
> > > I've already said I think usb-storage should be doing command rejection
> > > here not simply trying to reorganise SCSI so the commands the devices
> > > don't like don't get issued because that way any user space offender
> > > gets fixed too (and SCSI doesn't need patching).
> > 
> > The filtering/rejection issue was discussed, and I agree that the USB
> > code shouldn't be the one responsible for doing this type of thing, the
> > scsi core shouldn't be sending out those types of messages in the first
> > place.
> 
> Well, it already is the usb_stor thread already has a detection and
> filtering component.  This particular problem isn't that certain SCSI
> sequences in init cause an issue, it's that instead of returning ILLEGAL
> COMMAND, the device crashes.  I can only fix the init layer.  If
> something higher up (hello hal) sends these commands, the device will
> crash anyway.
> 
> > > So my position is that it's the wrong thing to do, but if USB won't do
> > > the right thing, I'll reluctantly ack ... have we reached that point?
> > 
> > Heh, what do you think the "right thing" is here, filtering?  Shouldn't
> > the "right thing" just be to not send these commands like this patch set
> > provides?
> 
> So I have to filter in SCSI?  That's not really logical (nor what the
> patch does).  The point is that if the commands get rejected properly in
> the first place, all levels of the stack will "just work".  If you alter
> SCSI not to send the command, fine we don't crash on init, but we're
> still vulnerable to another entity sending the command and crashing the
> device at a random time.
> 
> The blacklist information is that this device crashes on that command.
> Since we don't have to work around it, the best model is for some layer
> to intercept the command and reply "I don't support this" on behalf of
> the device.  Since the layer where the identity information for this is
> held is USB, it makes sense that this is just an addition to the USB
> storage filters.

Ok, I see the argument is valid for both sides.

What do others think?  Mathew, any thoughts?

thanks,

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux