lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Mon, 6 Dec 2010 09:09:55 +0100
From:	"Robert Lukassen" <Robert.Lukassen@...tom.com>
To:	"Jef Driesen" <jefdriesen@...enet.be>, "Greg KH" <greg@...ah.com>
Cc:	"David Brownell" <dbrownell@...rs.sourceforge.net>,
	"Greg Kroah-Hartman" <gregkh@...e.de>, <linux-usb@...r.kernel.org>,
	<linux-kernel@...r.kernel.org>
Subject: RE: [PATCH] USB: g_serial: Allow to override the default VID/PID

Hi,

Yes, providing access to those module parameters was the original goal. I agree that my patch should be reverted and I'll try to come up with a method of accessing these values without violating the information hiding principles too much. I don't like accessing globals.

Robert

> -----Original Message-----
> From: Jef Driesen [mailto:jefdriesen@...enet.be] 
> Sent: Friday, December 03, 2010 11:10 PM
> To: Greg KH
> Cc: Robert Lukassen; David Brownell; Greg Kroah-Hartman; 
> linux-usb@...r.kernel.org; linux-kernel@...r.kernel.org
> Subject: Re: [PATCH] USB: g_serial: Allow to override the 
> default VID/PID
> 
> On 30/11/10 18:46, Greg KH wrote:
> > On Mon, Nov 22, 2010 at 11:20:55AM +0100, Robert Lukassen wrote:
> >> Hi,
> >>
> >> I just revisited the patch I submitted and I can see that it needs 
> >> fixing. The intention of the patch was to provide the idVendor& 
> >> idProduct kernel module parameter overrides to the individual 
> >> functions at 'bind()' time. Prior to the patch, the overrides were 
> >> done after the bind, making it hard for individual functions to 
> >> determine the correct value for idVendor (some functions 
> may need to 
> >> use that value, e.g. USB audio when it registers itself as an ALSA 
> >> device; it would want to use the same Vendor id).
> >>
> >> The patch makes sure that that happens, however, right after the 
> >> bind() the patched values are lost due to the copying of 
> the gadget 
> >> specific device descriptor. Here's the snippet from 2.6.34:
> >>
> >>   999        usb_gadget_set_selfpowered(gadget);
> >> 1000
> >>
> >> 1001        /* interface and string IDs start at zero via kzalloc.
> >> 1002         * we force endpoints to start unassigned; few 
> controller
> >> 1003         * drivers will zero ep->driver_data.
> >> 1004         */
> >> 1005        usb_ep_autoconfig_reset(cdev->gadget);
> >> 1006
> >> 1007        /* composite gadget needs to assign strings 
> for whole device (like
> >> 1008         * serial number), register function drivers, 
> potentially update
> >> 1009         * power state and consumption, etc
> >> 1010         */
> >> 1011        status = composite->bind(cdev);
> >> 1012        if (status<  0)
> >> 1013                goto fail;
> >> 1014
> >> 1015        cdev->desc = *composite->dev;
> >> 1016        cdev->desc.bMaxPacketSize0 = gadget->ep0->maxpacket;
> >> 1017
> >> 1018        /* standardized runtime overrides for device ID data */
> >> 1019        if (idVendor)
> >> 1020                cdev->desc.idVendor = cpu_to_le16(idVendor);
> >> 1021        if (idProduct)
> >> 1022                cdev->desc.idProduct = cpu_to_le16(idProduct);
> >> 1023        if (bcdDevice)
> >> 1024                cdev->desc.bcdDevice = cpu_to_le16(bcdDevice);
> >> 1025
> >>
> >> In line 1015, the composite device descriptor is copied to the 
> >> cdev->desc field. Then the values get patched.
> >>
> >> My patch just moved lines 1018-1024, so that the functions could 
> >> access the patched values. The ill side effect is that 
> these patched 
> >> values are lost when the *composite->dev (== device descriptor) is 
> >> copied in line 1015.
> >>
> >> It would seem that the patch should also have moved lines 
> 1015-1016 
> >> in front of the composite->bind(cdev) call.
> >>
> >> It would require all composite gadgets (such as serial.c) and all 
> >> functions (such as f_acm.c) to do any modifications to the device 
> >> descriptor as passed to them in the 'bind' call. For 
> functions that 
> >> is natural, as they should be unaware of the gadget that uses them.
> >>
> >> The composite gadgets such as 'serial' seem to deal with 
> it differently.
> >> The serial.c gadget refers to the device descriptor as 
> 'device_desc', 
> >> and it is a static struct. It references it in its 'init' function 
> >> (which is ok, it is prior to the registration point) and in the 
> >> gs_bind() call. At that point it should probably not be 
> using 'device_desc', but cdev->desc.
> >>
> >> I think we can go one of two ways. I'd be happy to go over the 
> >> composite gadgets and change their use of their device 
> descriptors, 
> >> such that they use cdev->desc at
> >> bind() time. Combining that with the moving the copying of the 
> >> *composite->dev to before calling 'composite->bind()' 
> would make things consistent.
> >>
> >> The other way is reverting my original patch. For those functions 
> >> that need access to the overridden idVendor/idProduct code, we'll 
> >> need to work out another
> >> (generic) solution.
> >
> > So, do you want me to revert your original patch and wait 
> for you to 
> > come up with a "better" solution?
> >
> > That seems like the correct thing to do at the moment.
> 
> If the original commit is reverted, the idVendor and 
> idProduct module parameters can still be accessed through the 
> global variables directly (like I did in my own pathc). Since 
> access to those values appears to be the main goal of the 
> patch, I think no functionality will be lost by reverting the commit.
> 


This e-mail message contains information which is confidential and may be privileged. It is intended for use by the addressee only. If you are not the intended addressee, we request that you notify the sender immediately and delete or destroy this e-mail message and any attachment(s), without copying, saving, forwarding, disclosing or using its contents in any other way. TomTom N.V., TomTom International BV or any other company belonging to the TomTom group of companies will not be liable for damage relating to the communication by e-mail of data, documents or any other information.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ