From: m00150988@huawei.com
To: linux-usb@vger.kernel.org, linux-usb@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, linux-kernel@vger.kernel.org,
zihan@huawei.com, zihan@huawei.com, Lin Lei <Lin.Lei@huawei.com>,
Franko Fang <huananhu@huawei.com>,
wangyeqi@huawei.com, wangyeqi@huawei.com
Subject: Re: [PATCH] fix oops in usbserial_cleanup function;
Date: Fri, 15 Oct 2010 16:30:13 +0800 [thread overview]
Message-ID: <fadccdfb103f0.103f0fadccdfb@huawei.com> (raw)
From:ma rui <m00150988@huawei.com>
1. I find this bug on OpenSUSE 11.3 which kernel version is 2.6.34, but the latest kernel version 2.6.36-rc7 aslo have this bug. This patch is based on
the kernel of 2.6.36-rc7
2. bug report:
a. Install huawei datacard dashboard on OpenSUSE 11.3
b. Plug in huawei datacard into OpenSUSE 11.3 which kernel version is 2.6.36-rc7
c. After the dashboard has detected the device, I pull out the usb datacard
d. Close dashboard,then kernel panic will happen in usbserial_clean function
Yes, the datacard exit without close the port.
But after the dashboard connect internet with hauwei datacard, then Hibernate/resume, the bug will happen too.
Do you have any other good idea to resolve this bug,or please apply my patch,thanks. :)
Signed-off-by: ma rui <m00150988@huawei.com>
diff -uprN -X linux-2.6.36-rc7_orig/Documentation/dontdiff linux-2.6.36-rc7_orig/drivers/usb/serial/usb-serial.c linux-2.6.36-rc7/drivers/usb/serial/usb-serial.c
--- linux-2.6.36-rc7_orig/drivers/usb/serial/usb-serial.c 2010-10-06 16:39:52.000000000 -0400
+++ linux-2.6.36-rc7/drivers/usb/serial/usb-serial.c 2010-10-15 01:57:36.000000000 -0400
@@ -328,6 +328,16 @@ static void serial_cleanup(struct tty_st
/* The console is magical. Do not hang up the console hardware
* or there will be tears.
*/
+ if (NULL == port)
+ return;
+ mutex_lock(&port->serial->disc_mutex);
+ if (port->serial->disconnected) {
+ return_serial(port->serial);
+ mutex_unlock(&port->serial->disc_mutex);
+ return;
+ }
+ mutex_unlock(&port->serial->disc_mutex);
+
if (port->port.console)
return;
----- Original Message -----
From: "Greg KH" <greg@kroah.com>
To: "marui" <m00150988@huawei.com>
Cc: <linux-usb@vger.kernel.org>; <linux-kernel@vger.kernel.org>; <zihan@huawei.com>; "Lin Lei" <Lin.Lei@huawei.com>; "Franko Fang" <huananhu@huawei.com>; <wangyeqi@huawei.com>
Sent: Friday, October 15, 2010 12:20 PM
Subject: Re: [PATCH] fix oops in usbserial_cleanup function;
> On Fri, Oct 15, 2010 at 11:50:56AM +0800, marui wrote:
>> 1. I find this bug on OpenSUSE 11.3 which kernel vesion is 2.6.34, but the latest kernel vesion 2.6.36-rc7 aslo have this bug. This patch is based on the kernel of 2.6.36-rc7.
>> 2. Bug report:
>> a. Install huawei datacard dashboard on OpenSUSE 11.3
>> b. Plug in huawei datacard into OpenSUSE 11.3 which kernel verison is 2.6.36-rc7
>> c. After the dashboard has detected the device, I pull out the usb datacard
>> d. close datashboard,then kernel panic will happen in usbserial_cleanup function.
>
> What does the "dashboard" program do? Hold the port open?
>
>> 3. fix the bug:
>> I find usbserial_cleanup should judge the usb device wheher has been disconnected firtly.
>>
>>
>> diff -uprN -X linux-2.6.36-rc7-orig/Documentation/dontdiff linux-2.6.36-rc7-orig/drivers/usb/serial/usb-serial.c linux-2.6.36-rc7/drivers/usb/serial/usb-serial.c
>>
>> --- linux-2.6.36-rc7_orig/drivers/usb/serial/usb-serial.c 2010-10-06 16:39:52.000000000 -0400
>> +++ linux-2.6.36-rc7/drivers/usb/serial/usb-serial.c 2010-10-14 20:59:47.000000000 -0400
>> @@ -328,6 +328,20 @@ static void serial_cleanup(struct tty_st
>> /* The console is magical. Do not hang up the console hardware
>> * or there will be tears.
>> */
>> + dbg("%s start\n",__func__);
>> + if(NULL == port)
>> + {
>> + dbg("%s NULL == port\n",__func__);
>> + return;
>
> We don't need to keep the dbg statements here, do we?
>
>> + }
>> + mutex_lock(&port->serial->disc_mutex);
>> + if (port->serial->disconnected)
>> + {
>> + dbg("%s port->serial->disconnected\n",__func__);
>> + return_serial(port->serial);
>> + return;
>
> You can't return with a lock held.
>
>> + }
>> + mutex_unlock(&port->serial->disc_mutex);
>> if (port->port.console)
>> return;
>
> Your tabs and spaces got all mixed up, and it can't be applied. Also, I
> need a "Signed-off-by:" line to be able to accept it. Care to read the
> file Documentation/SubmittingPatches for how to format a patch so we can
> take it?
>
> Also, run the patch through scripts/checkpatch.pl and resolve the coding
> style issues before resending please.
>
> thanks,
>
> greg k-h
next reply other threads:[~2010-10-15 8:30 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-10-15 8:30 m00150988 [this message]
2010-10-15 14:15 ` [PATCH] fix oops in usbserial_cleanup function; Alan Stern
2010-10-15 19:09 ` Greg KH
2010-10-27 7:10 ` [PATCH] fix oops in usbserial_cleanup function marui
2010-10-27 9:32 ` Alan Cox
2010-10-29 5:07 ` marui
[not found] <00c601cb6c1c$2c768500$ba260b0a@china.huawei.com>
2010-10-15 4:20 ` [PATCH] fix oops in usbserial_cleanup function; Greg KH
-- strict thread matches above, loose matches on Subject: below --
2010-10-15 4:14 m00150988
2010-10-15 4:25 ` 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=fadccdfb103f0.103f0fadccdfb@huawei.com \
--to=m00150988@huawei.com \
--cc=Lin.Lei@huawei.com \
--cc=huananhu@huawei.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=wangyeqi@huawei.com \
--cc=zihan@huawei.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.