<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel/linux.git/drivers/tty/serial/icom.c, branch v4.9.331</title>
<subtitle>Linux kernel stable tree (mirror)</subtitle>
<id>https://git.radix-linux.su/kernel/linux.git/atom?h=v4.9.331</id>
<link rel='self' href='https://git.radix-linux.su/kernel/linux.git/atom?h=v4.9.331'/>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/'/>
<updated>2022-06-14T14:52:39+00:00</updated>
<entry>
<title>tty: Fix a possible resource leak in icom_probe</title>
<updated>2022-06-14T14:52:39+00:00</updated>
<author>
<name>Huang Guobin</name>
<email>huangguobin4@huawei.com</email>
</author>
<published>2022-03-31T09:10:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=f4c836d90da1ece88905d62ce2ce39a962f25d1a'/>
<id>urn:sha1:f4c836d90da1ece88905d62ce2ce39a962f25d1a</id>
<content type='text'>
[ Upstream commit ee157a79e7c82b01ae4c25de0ac75899801f322c ]

When pci_read_config_dword failed, call pci_release_regions() and
pci_disable_device() to recycle the resource previously allocated.

Reviewed-by: Jiri Slaby &lt;jirislaby@kernel.org&gt;
Signed-off-by: Huang Guobin &lt;huangguobin4@huawei.com&gt;
Link: https://lore.kernel.org/r/20220331091005.3290753-1-huangguobin4@huawei.com
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
</entry>
<entry>
<title>tty: Remove unused SERIAL_DO_RESTART define</title>
<updated>2015-12-14T03:59:48+00:00</updated>
<author>
<name>Peter Hurley</name>
<email>peter@hurleysoftware.com</email>
</author>
<published>2015-11-08T14:18:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=5841fc4b136b8dbab551749d2b12d71628f34635'/>
<id>urn:sha1:5841fc4b136b8dbab551749d2b12d71628f34635</id>
<content type='text'>
SERIAL_DO_RESTART is not used by these 3 drivers; remove.

Signed-off-by: Peter Hurley &lt;peter@hurleysoftware.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>tty: icom.c: move assignment out of if () block</title>
<updated>2015-05-10T17:04:17+00:00</updated>
<author>
<name>Greg Kroah-Hartman</name>
<email>gregkh@linuxfoundation.org</email>
</author>
<published>2015-04-30T09:22:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=01e51df54697c0ad6dbc5c7bc81b3af3f5329dc0'/>
<id>urn:sha1:01e51df54697c0ad6dbc5c7bc81b3af3f5329dc0</id>
<content type='text'>
We should not be doing assignments within an if () block
so fix up the code to not do this.

change was created using Coccinelle.

CC: Jiri Slaby &lt;jslaby@suse.cz&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>serial: icom: fix error return code</title>
<updated>2014-11-26T01:06:39+00:00</updated>
<author>
<name>Julia Lawall</name>
<email>Julia.Lawall@lip6.fr</email>
</author>
<published>2014-11-20T17:33:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=ddcbad929510bcad640693fe3cf299632823f61c'/>
<id>urn:sha1:ddcbad929510bcad640693fe3cf299632823f61c</id>
<content type='text'>
Return a negative error code on failure.

A simplified version of the semantic match that finds this problem is as
follows: (http://coccinelle.lip6.fr/)

// &lt;smpl&gt;
@@
identifier ret; expression e1,e2;
@@
(
if (\(ret &lt; 0\|ret != 0\))
 { ... return ret; }
|
ret = 0
)
... when != ret = e1
    when != &amp;ret
*if(...)
{
  ... when != ret = e2
      when forall
 return ret;
}
// &lt;/smpl&gt;

Signed-off-by: Julia Lawall &lt;Julia.Lawall@lip6.fr&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>serial: treewide: Remove empty implementations of enable_ms()</title>
<updated>2014-07-10T00:29:38+00:00</updated>
<author>
<name>Alexander Shiyan</name>
<email>shc_work@mail.ru</email>
</author>
<published>2014-06-03T14:54:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=8b152f1096975d012f60387b899d407e4a93b46c'/>
<id>urn:sha1:8b152f1096975d012f60387b899d407e4a93b46c</id>
<content type='text'>
Signed-off-by: Alexander Shiyan &lt;shc_work@mail.ru&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>serial: icom: dereference after free in load_code()</title>
<updated>2013-12-09T01:16:05+00:00</updated>
<author>
<name>Dan Carpenter</name>
<email>dan.carpenter@oracle.com</email>
</author>
<published>2013-11-08T09:53:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=d6a62b3b7eb1a000718f8ecac0c31eaa1e1f1187'/>
<id>urn:sha1:d6a62b3b7eb1a000718f8ecac0c31eaa1e1f1187</id>
<content type='text'>
We use "fw" in the next line after we release it.  I've shifted the call
to release_firmware() down a couple lines to fix this.

Signed-off-by: Dan Carpenter &lt;dan.carpenter@oracle.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>serial: icom: move array overflow checks earlier</title>
<updated>2013-08-27T23:24:33+00:00</updated>
<author>
<name>Dan Carpenter</name>
<email>dan.carpenter@oracle.com</email>
</author>
<published>2013-08-26T15:10:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=4f03ffcd3e8a8860c9adc153f03bf2ed7d428f2b'/>
<id>urn:sha1:4f03ffcd3e8a8860c9adc153f03bf2ed7d428f2b</id>
<content type='text'>
This code does an annoying thing where it writes to the array and then
checks later for array overflows.  I don't know if it's actually
possible to overflow but let's check before using the array index.

Signed-off-by: Dan Carpenter &lt;dan.carpenter@oracle.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>tty: serial: icom: drop uart_port-&gt;lock before calling tty_flip_buffer_push()</title>
<updated>2013-08-27T23:17:34+00:00</updated>
<author>
<name>Viresh Kumar</name>
<email>viresh.kumar@linaro.org</email>
</author>
<published>2013-08-19T14:44:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=5faf75d7fed2a27c6cd3a2669b2bad22c0dc640f'/>
<id>urn:sha1:5faf75d7fed2a27c6cd3a2669b2bad22c0dc640f</id>
<content type='text'>
The current driver triggers a lockdep warning for if tty_flip_buffer_push() is
called with uart_port-&gt;lock locked. This never shows up on UP kernels and comes
up only on SMP kernels.

Crash looks like this (produced with samsung.c driver):

-----
[&lt;c0014d58&gt;] (unwind_backtrace+0x0/0xf8) from [&lt;c0011908&gt;] (show_stack+0x10/0x14)
[&lt;c0011908&gt;] (show_stack+0x10/0x14) from [&lt;c035da34&gt;] (dump_stack+0x6c/0xac)
[&lt;c035da34&gt;] (dump_stack+0x6c/0xac) from [&lt;c01b59ac&gt;] (do_raw_spin_unlock+0xc4/0xd8)
[&lt;c01b59ac&gt;] (do_raw_spin_unlock+0xc4/0xd8) from [&lt;c03627e4&gt;] (_raw_spin_unlock_irqrestore+0xc/0)
[&lt;c03627e4&gt;] (_raw_spin_unlock_irqrestore+0xc/0x38) from [&lt;c020a1a8&gt;] (s3c24xx_serial_rx_chars+0)
[&lt;c020a1a8&gt;] (s3c24xx_serial_rx_chars+0x12c/0x260) from [&lt;c020aae8&gt;] (s3c64xx_serial_handle_irq+)
[&lt;c020aae8&gt;] (s3c64xx_serial_handle_irq+0x48/0x60) from [&lt;c006aaa0&gt;] (handle_irq_event_percpu+0x)
[&lt;c006aaa0&gt;] (handle_irq_event_percpu+0x50/0x194) from [&lt;c006ac20&gt;] (handle_irq_event+0x3c/0x5c)
[&lt;c006ac20&gt;] (handle_irq_event+0x3c/0x5c) from [&lt;c006d864&gt;] (handle_fasteoi_irq+0x80/0x13c)
[&lt;c006d864&gt;] (handle_fasteoi_irq+0x80/0x13c) from [&lt;c006a4a4&gt;] (generic_handle_irq+0x20/0x30)
[&lt;c006a4a4&gt;] (generic_handle_irq+0x20/0x30) from [&lt;c000f454&gt;] (handle_IRQ+0x38/0x94)
[&lt;c000f454&gt;] (handle_IRQ+0x38/0x94) from [&lt;c0008538&gt;] (gic_handle_irq+0x34/0x68)
[&lt;c0008538&gt;] (gic_handle_irq+0x34/0x68) from [&lt;c00123c0&gt;] (__irq_svc+0x40/0x70)
Exception stack(0xc04cdf70 to 0xc04cdfb8)
df60:                                     00000000 00000000 0000166e 00000000
df80: c04cc000 c050278f c050278f 00000001 c04d444c 410fc0f4 c03649b0 00000000
dfa0: 00000001 c04cdfb8 c000f758 c000f75c 60070013 ffffffff
[&lt;c00123c0&gt;] (__irq_svc+0x40/0x70) from [&lt;c000f75c&gt;] (arch_cpu_idle+0x28/0x30)
[&lt;c000f75c&gt;] (arch_cpu_idle+0x28/0x30) from [&lt;c0054888&gt;] (cpu_startup_entry+0x5c/0x148)
[&lt;c0054888&gt;] (cpu_startup_entry+0x5c/0x148) from [&lt;c0497aa4&gt;] (start_kernel+0x334/0x38c)
BUG: spinlock lockup suspected on CPU#0, kworker/0:1/360
 lock: s3c24xx_serial_ports+0x1d8/0x370, .magic: dead4ead, .owner: &lt;none&gt;/-1, .owner_cpu: -1
CPU: 0 PID: 360 Comm: kworker/0:1 Not tainted 3.11.0-rc6-next-20130819-00003-g75485f1 #2
Workqueue: events flush_to_ldisc
[&lt;c0014d58&gt;] (unwind_backtrace+0x0/0xf8) from [&lt;c0011908&gt;] (show_stack+0x10/0x14)
[&lt;c0011908&gt;] (show_stack+0x10/0x14) from [&lt;c035da34&gt;] (dump_stack+0x6c/0xac)
[&lt;c035da34&gt;] (dump_stack+0x6c/0xac) from [&lt;c01b581c&gt;] (do_raw_spin_lock+0x100/0x17c)
[&lt;c01b581c&gt;] (do_raw_spin_lock+0x100/0x17c) from [&lt;c03628a0&gt;] (_raw_spin_lock_irqsave+0x20/0x28)
[&lt;c03628a0&gt;] (_raw_spin_lock_irqsave+0x20/0x28) from [&lt;c0203224&gt;] (uart_start+0x18/0x34)
[&lt;c0203224&gt;] (uart_start+0x18/0x34) from [&lt;c01ef890&gt;] (__receive_buf+0x4b4/0x738)
[&lt;c01ef890&gt;] (__receive_buf+0x4b4/0x738) from [&lt;c01efb44&gt;] (n_tty_receive_buf2+0x30/0x98)
[&lt;c01efb44&gt;] (n_tty_receive_buf2+0x30/0x98) from [&lt;c01f2ba8&gt;] (flush_to_ldisc+0xec/0x138)
[&lt;c01f2ba8&gt;] (flush_to_ldisc+0xec/0x138) from [&lt;c0031af0&gt;] (process_one_work+0xfc/0x348)
[&lt;c0031af0&gt;] (process_one_work+0xfc/0x348) from [&lt;c0032138&gt;] (worker_thread+0x138/0x37c)
[&lt;c0032138&gt;] (worker_thread+0x138/0x37c) from [&lt;c0037a7c&gt;] (kthread+0xa4/0xb0)
[&lt;c0037a7c&gt;] (kthread+0xa4/0xb0) from [&lt;c000e5f8&gt;] (ret_from_fork+0x14/0x3c)
-----

Release the port lock before calling tty_flip_buffer_push() and reacquire it
after the call.

Similar stuff was already done for few other drivers in the past, like:

commit 2389b272168ceec056ca1d8a870a97fa9c26e11a
Author: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Date:   Tue May 29 21:53:50 2007 +0100

    [ARM] 4417/1: Serial: Fix AMBA drivers locking

Signed-off-by: Viresh Kumar &lt;viresh.kumar@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>serial: icom: fix casting warning</title>
<updated>2013-08-12T18:35:31+00:00</updated>
<author>
<name>Jingoo Han</name>
<email>jg1.han@samsung.com</email>
</author>
<published>2013-08-08T08:34:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=5a7daed81cd5ff6d4098b7f6342ba35988fcbb86'/>
<id>urn:sha1:5a7daed81cd5ff6d4098b7f6342ba35988fcbb86</id>
<content type='text'>
icom_port-&gt;uart_port.membase is (unsigned char __iomem *); thus,
casting (unsigned char __iomem *) is necessary to fix the
following warning. Also, local symbols are staticized.

drivers/tty/serial/icom.c:108:26: warning: symbol 'start_proc' was not declared. Should it be static?
drivers/tty/serial/icom.c:116:26: warning: symbol 'stop_proc' was not declared. Should it be static?
drivers/tty/serial/icom.c:123:25: warning: symbol 'int_mask_tbl' was not declared. Should it be static?
drivers/tty/serial/icom.c:1569:54: warning: incorrect type in assignment (different address spaces)
drivers/tty/serial/icom.c:1569:54:    expected unsigned char [noderef] &lt;asn:2&gt;*membase
drivers/tty/serial/icom.c:1569:54:    got char *&lt;noident&gt;
drivers/tty/serial/icom.c:1090:9: warning: cast truncates bits from constant value (ffffff7f becomes 7f)

Signed-off-by: Jingoo Han &lt;jg1.han@samsung.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>driver: tty: serial: remove cast for kzalloc return value</title>
<updated>2013-03-19T00:09:37+00:00</updated>
<author>
<name>Zhang Yanfei</name>
<email>zhangyanfei@cn.fujitsu.com</email>
</author>
<published>2013-03-12T05:27:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=b9a129f4813ef5dea8da4670e100f8ba89abebea'/>
<id>urn:sha1:b9a129f4813ef5dea8da4670e100f8ba89abebea</id>
<content type='text'>
remove cast for kzalloc return value.

Signed-off-by: Zhang Yanfei &lt;zhangyanfei@cn.fujitsu.com&gt;
Cc: Jiri Slaby &lt;jslaby@suse.cz&gt;
Cc: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
</feed>
