Re: Using USB Generic Serial Converter with devices from different vendors

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

 



On Wed, 2010-11-24 at 17:15 +0100, Johan Hovold wrote:
> 
> Can you try the attached patch and see if it helps?
> 
> Thanks,
> Johan

This patch just masks one of the symptoms. hso_log_port should never be
called for a net device which is not created in the first place.

Digging deeper I found this gem:

if (((port_spec & HSO_PORT_MASK) == HSO_PORT_NETWORK) &&
                    !disable_net)
                        hso_dev = hso_create_net_device(interface,
port_spec);
                else
                        hso_dev =
                            hso_create_bulk_serial_device(interface,
port_spec);

So if we need to make network port but disable_net is set, we just make
a serial device instead on that interface, which is obviously wrong.

in hso_create_bulk_serial_device, hso_log_port is called with a
port_spec for a network device and things go wrong.

I'll see if I can make a patch later.

Thanks,

Filip-

> 
> 
> >From f623d8fb01b581a82e7d032af32aa29815c1d79c Mon Sep 17 00:00:00 2001
> From: Johan Hovold <jhovold@xxxxxxxxx>
> Date: Wed, 24 Nov 2010 17:00:00 +0100
> Subject: [PATCH] net: hso: fix crash when disable_net is set
> 
> When module parameter disable_net is set, a serial device is created
> instead of a net device but hso_log_port still tries to access the
> network device.
> 
> Compile-only tested.
> 
> Reported-by: Piotr Isajew <pki@xxxxxxxxx>
> Signed-off-by: Johan Hovold <jhovold@xxxxxxxxx>
> ---
>  drivers/net/usb/hso.c |    3 ++-
>  1 files changed, 2 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/net/usb/hso.c b/drivers/net/usb/hso.c
> index 1cd752f..bbb9cd7 100644
> --- a/drivers/net/usb/hso.c
> +++ b/drivers/net/usb/hso.c
> @@ -2151,7 +2151,8 @@ static void hso_log_port(struct hso_device *hso_dev)
>  		port_type = "Unknown";
>  		break;
>  	}
> -	if ((hso_dev->port_spec & HSO_PORT_MASK) == HSO_PORT_NETWORK) {
> +	if ((hso_dev->port_spec & HSO_PORT_MASK) == HSO_PORT_NETWORK &&
> +								!disable_net) {
>  		sprintf(port_dev, "%s", dev2net(hso_dev)->net->name);
>  	} else
>  		sprintf(port_dev, "/dev/%s%d", tty_filename,

--
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