<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel/linux.git/drivers, branch v3.18.51</title>
<subtitle>Linux kernel stable tree (mirror)</subtitle>
<id>https://git.radix-linux.su/kernel/linux.git/atom?h=v3.18.51</id>
<link rel='self' href='https://git.radix-linux.su/kernel/linux.git/atom?h=v3.18.51'/>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/'/>
<updated>2017-04-30T03:49:17+00:00</updated>
<entry>
<title>staging/android/ion : fix a race condition in the ion driver</title>
<updated>2017-04-30T03:49:17+00:00</updated>
<author>
<name>EunTaik Lee</name>
<email>eun.taik.lee@samsung.com</email>
</author>
<published>2016-02-24T04:38:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=f63514257efd74108711e1d4e2ca462968170c42'/>
<id>urn:sha1:f63514257efd74108711e1d4e2ca462968170c42</id>
<content type='text'>
commit 9590232bb4f4cc824f3425a6e1349afbe6d6d2b7 upstream.

There is a use-after-free problem in the ion driver.
This is caused by a race condition in the ion_ioctl()
function.

A handle has ref count of 1 and two tasks on different
cpus calls ION_IOC_FREE simultaneously.

cpu 0                                   cpu 1
-------------------------------------------------------
ion_handle_get_by_id()
(ref == 2)
                            ion_handle_get_by_id()
                            (ref == 3)

ion_free()
(ref == 2)

ion_handle_put()
(ref == 1)

                            ion_free()
                            (ref == 0 so ion_handle_destroy() is
                            called
                            and the handle is freed.)

                            ion_handle_put() is called and it
                            decreases the slub's next free pointer

The problem is detected as an unaligned access in the
spin lock functions since it uses load exclusive
 instruction. In some cases it corrupts the slub's
free pointer which causes a mis-aligned access to the
next free pointer.(kmalloc returns a pointer like
ffffc0745b4580aa). And it causes lots of other
hard-to-debug problems.

This symptom is caused since the first member in the
ion_handle structure is the reference count and the
ion driver decrements the reference after it has been
freed.

To fix this problem client-&gt;lock mutex is extended
to protect all the codes that uses the handle.

Signed-off-by: Eun Taik Lee &lt;eun.taik.lee@samsung.com&gt;
Reviewed-by: Laura Abbott &lt;labbott@redhat.com&gt;
Cc: Ben Hutchings &lt;ben.hutchings@codethink.co.uk&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

index 7ff2a7ec871f..33b390e7ea31
</content>
</entry>
<entry>
<title>vfio/pci: Fix integer overflows, bitmask check</title>
<updated>2017-04-30T03:49:17+00:00</updated>
<author>
<name>Vlad Tsyrklevich</name>
<email>vlad@tsyrklevich.net</email>
</author>
<published>2016-10-12T16:51:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=898ef37a73f7ad23cd5030d1c845d9b00da20721'/>
<id>urn:sha1:898ef37a73f7ad23cd5030d1c845d9b00da20721</id>
<content type='text'>
commit 05692d7005a364add85c6e25a6c4447ce08f913a upstream.

The VFIO_DEVICE_SET_IRQS ioctl did not sufficiently sanitize
user-supplied integers, potentially allowing memory corruption. This
patch adds appropriate integer overflow checks, checks the range bounds
for VFIO_IRQ_SET_DATA_NONE, and also verifies that only single element
in the VFIO_IRQ_SET_DATA_TYPE_MASK bitmask is set.
VFIO_IRQ_SET_ACTION_TYPE_MASK is already correctly checked later in
vfio_pci_set_irqs_ioctl().

Furthermore, a kzalloc is changed to a kcalloc because the use of a
kzalloc with an integer multiplication allowed an integer overflow
condition to be reached without this patch. kcalloc checks for overflow
and should prevent a similar occurrence.

Signed-off-by: Vlad Tsyrklevich &lt;vlad@tsyrklevich.net&gt;
Signed-off-by: Alex Williamson &lt;alex.williamson@redhat.com&gt;
Cc: Ben Hutchings &lt;ben.hutchings@codethink.co.uk&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>xc2028: avoid use after free</title>
<updated>2017-04-30T03:49:17+00:00</updated>
<author>
<name>Mauro Carvalho Chehab</name>
<email>mchehab@osg.samsung.com</email>
</author>
<published>2016-01-28T11:22:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=dff2b1e346b783fb69d736b887005e6d41f34d9b'/>
<id>urn:sha1:dff2b1e346b783fb69d736b887005e6d41f34d9b</id>
<content type='text'>
commit 8dfbcc4351a0b6d2f2d77f367552f48ffefafe18 upstream.

If struct xc2028_config is passed without a firmware name,
the following trouble may happen:

[11009.907205] xc2028 5-0061: type set to XCeive xc2028/xc3028 tuner
[11009.907491] ==================================================================
[11009.907750] BUG: KASAN: use-after-free in strcmp+0x96/0xb0 at addr ffff8803bd78ab40
[11009.907992] Read of size 1 by task modprobe/28992
[11009.907994] =============================================================================
[11009.907997] BUG kmalloc-16 (Tainted: G        W      ): kasan: bad access detected
[11009.907999] -----------------------------------------------------------------------------

[11009.908008] INFO: Allocated in xhci_urb_enqueue+0x214/0x14c0 [xhci_hcd] age=0 cpu=3 pid=28992
[11009.908012] 	___slab_alloc+0x581/0x5b0
[11009.908014] 	__slab_alloc+0x51/0x90
[11009.908017] 	__kmalloc+0x27b/0x350
[11009.908022] 	xhci_urb_enqueue+0x214/0x14c0 [xhci_hcd]
[11009.908026] 	usb_hcd_submit_urb+0x1e8/0x1c60
[11009.908029] 	usb_submit_urb+0xb0e/0x1200
[11009.908032] 	usb_serial_generic_write_start+0xb6/0x4c0
[11009.908035] 	usb_serial_generic_write+0x92/0xc0
[11009.908039] 	usb_console_write+0x38a/0x560
[11009.908045] 	call_console_drivers.constprop.14+0x1ee/0x2c0
[11009.908051] 	console_unlock+0x40d/0x900
[11009.908056] 	vprintk_emit+0x4b4/0x830
[11009.908061] 	vprintk_default+0x1f/0x30
[11009.908064] 	printk+0x99/0xb5
[11009.908067] 	kasan_report_error+0x10a/0x550
[11009.908070] 	__asan_report_load1_noabort+0x43/0x50
[11009.908074] INFO: Freed in xc2028_set_config+0x90/0x630 [tuner_xc2028] age=1 cpu=3 pid=28992
[11009.908077] 	__slab_free+0x2ec/0x460
[11009.908080] 	kfree+0x266/0x280
[11009.908083] 	xc2028_set_config+0x90/0x630 [tuner_xc2028]
[11009.908086] 	xc2028_attach+0x310/0x8a0 [tuner_xc2028]
[11009.908090] 	em28xx_attach_xc3028.constprop.7+0x1f9/0x30d [em28xx_dvb]
[11009.908094] 	em28xx_dvb_init.part.3+0x8e4/0x5cf4 [em28xx_dvb]
[11009.908098] 	em28xx_dvb_init+0x81/0x8a [em28xx_dvb]
[11009.908101] 	em28xx_register_extension+0xd9/0x190 [em28xx]
[11009.908105] 	em28xx_dvb_register+0x10/0x1000 [em28xx_dvb]
[11009.908108] 	do_one_initcall+0x141/0x300
[11009.908111] 	do_init_module+0x1d0/0x5ad
[11009.908114] 	load_module+0x6666/0x9ba0
[11009.908117] 	SyS_finit_module+0x108/0x130
[11009.908120] 	entry_SYSCALL_64_fastpath+0x16/0x76
[11009.908123] INFO: Slab 0xffffea000ef5e280 objects=25 used=25 fp=0x          (null) flags=0x2ffff8000004080
[11009.908126] INFO: Object 0xffff8803bd78ab40 @offset=2880 fp=0x0000000000000001

[11009.908130] Bytes b4 ffff8803bd78ab30: 01 00 00 00 2a 07 00 00 9d 28 00 00 01 00 00 00  ....*....(......
[11009.908133] Object ffff8803bd78ab40: 01 00 00 00 00 00 00 00 b0 1d c3 6a 00 88 ff ff  ...........j....
[11009.908137] CPU: 3 PID: 28992 Comm: modprobe Tainted: G    B   W       4.5.0-rc1+ #43
[11009.908140] Hardware name:                  /NUC5i7RYB, BIOS RYBDWi35.86A.0350.2015.0812.1722 08/12/2015
[11009.908142]  ffff8803bd78a000 ffff8802c273f1b8 ffffffff81932007 ffff8803c6407a80
[11009.908148]  ffff8802c273f1e8 ffffffff81556759 ffff8803c6407a80 ffffea000ef5e280
[11009.908153]  ffff8803bd78ab40 dffffc0000000000 ffff8802c273f210 ffffffff8155ccb4
[11009.908158] Call Trace:
[11009.908162]  [&lt;ffffffff81932007&gt;] dump_stack+0x4b/0x64
[11009.908165]  [&lt;ffffffff81556759&gt;] print_trailer+0xf9/0x150
[11009.908168]  [&lt;ffffffff8155ccb4&gt;] object_err+0x34/0x40
[11009.908171]  [&lt;ffffffff8155f260&gt;] kasan_report_error+0x230/0x550
[11009.908175]  [&lt;ffffffff81237d71&gt;] ? trace_hardirqs_off_caller+0x21/0x290
[11009.908179]  [&lt;ffffffff8155e926&gt;] ? kasan_unpoison_shadow+0x36/0x50
[11009.908182]  [&lt;ffffffff8155f5c3&gt;] __asan_report_load1_noabort+0x43/0x50
[11009.908185]  [&lt;ffffffff8155ea00&gt;] ? __asan_register_globals+0x50/0xa0
[11009.908189]  [&lt;ffffffff8194cea6&gt;] ? strcmp+0x96/0xb0
[11009.908192]  [&lt;ffffffff8194cea6&gt;] strcmp+0x96/0xb0
[11009.908196]  [&lt;ffffffffa13ba4ac&gt;] xc2028_set_config+0x15c/0x630 [tuner_xc2028]
[11009.908200]  [&lt;ffffffffa13bac90&gt;] xc2028_attach+0x310/0x8a0 [tuner_xc2028]
[11009.908203]  [&lt;ffffffff8155ea78&gt;] ? memset+0x28/0x30
[11009.908206]  [&lt;ffffffffa13ba980&gt;] ? xc2028_set_config+0x630/0x630 [tuner_xc2028]
[11009.908211]  [&lt;ffffffffa157a59a&gt;] em28xx_attach_xc3028.constprop.7+0x1f9/0x30d [em28xx_dvb]
[11009.908215]  [&lt;ffffffffa157aa2a&gt;] ? em28xx_dvb_init.part.3+0x37c/0x5cf4 [em28xx_dvb]
[11009.908219]  [&lt;ffffffffa157a3a1&gt;] ? hauppauge_hvr930c_init+0x487/0x487 [em28xx_dvb]
[11009.908222]  [&lt;ffffffffa01795ac&gt;] ? lgdt330x_attach+0x1cc/0x370 [lgdt330x]
[11009.908226]  [&lt;ffffffffa01793e0&gt;] ? i2c_read_demod_bytes.isra.2+0x210/0x210 [lgdt330x]
[11009.908230]  [&lt;ffffffff812e87d0&gt;] ? ref_module.part.15+0x10/0x10
[11009.908233]  [&lt;ffffffff812e56e0&gt;] ? module_assert_mutex_or_preempt+0x80/0x80
[11009.908238]  [&lt;ffffffffa157af92&gt;] em28xx_dvb_init.part.3+0x8e4/0x5cf4 [em28xx_dvb]
[11009.908242]  [&lt;ffffffffa157a6ae&gt;] ? em28xx_attach_xc3028.constprop.7+0x30d/0x30d [em28xx_dvb]
[11009.908245]  [&lt;ffffffff8195222d&gt;] ? string+0x14d/0x1f0
[11009.908249]  [&lt;ffffffff8195381f&gt;] ? symbol_string+0xff/0x1a0
[11009.908253]  [&lt;ffffffff81953720&gt;] ? uuid_string+0x6f0/0x6f0
[11009.908257]  [&lt;ffffffff811a775e&gt;] ? __kernel_text_address+0x7e/0xa0
[11009.908260]  [&lt;ffffffff8104b02f&gt;] ? print_context_stack+0x7f/0xf0
[11009.908264]  [&lt;ffffffff812e9846&gt;] ? __module_address+0xb6/0x360
[11009.908268]  [&lt;ffffffff8137fdc9&gt;] ? is_ftrace_trampoline+0x99/0xe0
[11009.908271]  [&lt;ffffffff811a775e&gt;] ? __kernel_text_address+0x7e/0xa0
[11009.908275]  [&lt;ffffffff81240a70&gt;] ? debug_check_no_locks_freed+0x290/0x290
[11009.908278]  [&lt;ffffffff8104a24b&gt;] ? dump_trace+0x11b/0x300
[11009.908282]  [&lt;ffffffffa13e8143&gt;] ? em28xx_register_extension+0x23/0x190 [em28xx]
[11009.908285]  [&lt;ffffffff81237d71&gt;] ? trace_hardirqs_off_caller+0x21/0x290
[11009.908289]  [&lt;ffffffff8123ff56&gt;] ? trace_hardirqs_on_caller+0x16/0x590
[11009.908292]  [&lt;ffffffff812404dd&gt;] ? trace_hardirqs_on+0xd/0x10
[11009.908296]  [&lt;ffffffffa13e8143&gt;] ? em28xx_register_extension+0x23/0x190 [em28xx]
[11009.908299]  [&lt;ffffffff822dcbb0&gt;] ? mutex_trylock+0x400/0x400
[11009.908302]  [&lt;ffffffff810021a1&gt;] ? do_one_initcall+0x131/0x300
[11009.908306]  [&lt;ffffffff81296dc7&gt;] ? call_rcu_sched+0x17/0x20
[11009.908309]  [&lt;ffffffff8159e708&gt;] ? put_object+0x48/0x70
[11009.908314]  [&lt;ffffffffa1579f11&gt;] em28xx_dvb_init+0x81/0x8a [em28xx_dvb]
[11009.908317]  [&lt;ffffffffa13e81f9&gt;] em28xx_register_extension+0xd9/0x190 [em28xx]
[11009.908320]  [&lt;ffffffffa0150000&gt;] ? 0xffffffffa0150000
[11009.908324]  [&lt;ffffffffa0150010&gt;] em28xx_dvb_register+0x10/0x1000 [em28xx_dvb]
[11009.908327]  [&lt;ffffffff810021b1&gt;] do_one_initcall+0x141/0x300
[11009.908330]  [&lt;ffffffff81002070&gt;] ? try_to_run_init_process+0x40/0x40
[11009.908333]  [&lt;ffffffff8123ff56&gt;] ? trace_hardirqs_on_caller+0x16/0x590
[11009.908337]  [&lt;ffffffff8155e926&gt;] ? kasan_unpoison_shadow+0x36/0x50
[11009.908340]  [&lt;ffffffff8155e926&gt;] ? kasan_unpoison_shadow+0x36/0x50
[11009.908343]  [&lt;ffffffff8155e926&gt;] ? kasan_unpoison_shadow+0x36/0x50
[11009.908346]  [&lt;ffffffff8155ea37&gt;] ? __asan_register_globals+0x87/0xa0
[11009.908350]  [&lt;ffffffff8144da7b&gt;] do_init_module+0x1d0/0x5ad
[11009.908353]  [&lt;ffffffff812f2626&gt;] load_module+0x6666/0x9ba0
[11009.908356]  [&lt;ffffffff812e9c90&gt;] ? symbol_put_addr+0x50/0x50
[11009.908361]  [&lt;ffffffffa1580037&gt;] ? em28xx_dvb_init.part.3+0x5989/0x5cf4 [em28xx_dvb]
[11009.908366]  [&lt;ffffffff812ebfc0&gt;] ? module_frob_arch_sections+0x20/0x20
[11009.908369]  [&lt;ffffffff815bc940&gt;] ? open_exec+0x50/0x50
[11009.908374]  [&lt;ffffffff811671bb&gt;] ? ns_capable+0x5b/0xd0
[11009.908377]  [&lt;ffffffff812f5e58&gt;] SyS_finit_module+0x108/0x130
[11009.908379]  [&lt;ffffffff812f5d50&gt;] ? SyS_init_module+0x1f0/0x1f0
[11009.908383]  [&lt;ffffffff81004044&gt;] ? lockdep_sys_exit_thunk+0x12/0x14
[11009.908394]  [&lt;ffffffff822e6936&gt;] entry_SYSCALL_64_fastpath+0x16/0x76
[11009.908396] Memory state around the buggy address:
[11009.908398]  ffff8803bd78aa00: 00 00 fc fc fc fc fc fc fc fc fc fc fc fc fc fc
[11009.908401]  ffff8803bd78aa80: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
[11009.908403] &gt;ffff8803bd78ab00: fc fc fc fc fc fc fc fc 00 00 fc fc fc fc fc fc
[11009.908405]                                            ^
[11009.908407]  ffff8803bd78ab80: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
[11009.908409]  ffff8803bd78ac00: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
[11009.908411] ==================================================================

In order to avoid it, let's set the cached value of the firmware
name to NULL after freeing it. While here, return an error if
the memory allocation fails.

Signed-off-by: Mauro Carvalho Chehab &lt;mchehab@osg.samsung.com&gt;
Cc: Ben Hutchings &lt;ben.hutchings@codethink.co.uk&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>aic94xx: Skip reading user settings if flash is not found</title>
<updated>2017-04-30T03:49:17+00:00</updated>
<author>
<name>Hannes Reinecke</name>
<email>hare@suse.de</email>
</author>
<published>2015-07-06T11:07:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=ba57c28de48eba5223e0a9a528b4a6108ce3872c'/>
<id>urn:sha1:ba57c28de48eba5223e0a9a528b4a6108ce3872c</id>
<content type='text'>
commit 36dd5acd196574d41de3e81d8264df475bbb7123 upstream.

If no user settings are found it's pointless trying to
read them from flash. So skip that step.
This also fixes a compilation warning about uninitialized variables in
aic94xx.

Signed-off-by: Hannes Reinecke &lt;hare@suse.de&gt;
Reviewed-by: Christoph Hellwig &lt;hch@lst.de&gt;
Signed-off-by: James Bottomley &lt;JBottomley@Odin.com&gt;
Cc: Arnd Bergmann &lt;arnd@arndb.de&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>mmc: sunxi: avoid invalid pointer calculation</title>
<updated>2017-04-30T03:49:16+00:00</updated>
<author>
<name>Arnd Bergmann</name>
<email>arnd@arndb.de</email>
</author>
<published>2015-02-24T09:47:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=a73ec766e4ea7525db20cb59c8a97e3d8b955fb8'/>
<id>urn:sha1:a73ec766e4ea7525db20cb59c8a97e3d8b955fb8</id>
<content type='text'>
commit d34712d2e3db9b241d0484a6e3839c6b7ef9df78 upstream.

The sunxi mmc driver tries to calculate a dma address by using pointer
arithmetic, which causes a warning when dma_addr_t is wider than a pointer:

drivers/mmc/host/sunxi-mmc.c: In function 'sunxi_mmc_init_idma_des':
drivers/mmc/host/sunxi-mmc.c:296:35: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
  struct sunxi_idma_des *pdes_pa = (struct sunxi_idma_des *)host-&gt;sg_dma;
                                   ^

To avoid this warning and to simplify the logic, this changes
the code to avoid the cast and calculate the correct address
manually. The behavior should be unchanged.

Signed-off-by: Arnd Bergmann &lt;arnd@arndb.de&gt;
Acked-by: David Lanzendörfer &lt;david.lanzendoerfer@o2s.ch&gt;
Signed-off-by: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>net: tulip: turn compile-time warning into dev_warn()</title>
<updated>2017-04-30T03:49:16+00:00</updated>
<author>
<name>Arnd Bergmann</name>
<email>arnd@arndb.de</email>
</author>
<published>2015-11-19T10:42:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=51af0f4daa3bee48ef9b4ed5c56f8130ede4aed8'/>
<id>urn:sha1:51af0f4daa3bee48ef9b4ed5c56f8130ede4aed8</id>
<content type='text'>
commit de92718883ddbcd11b738d36ffcf57617b97fa12 upstream.

The tulip driver causes annoying build-time warnings for allmodconfig
builds for all recent architectures:

dec/tulip/winbond-840.c:910:2: warning: #warning Processor architecture undefined
dec/tulip/tulip_core.c:101:2: warning: #warning Processor architecture undefined!

This is the last remaining warning for arm64, and I'd like to get rid of
it. We don't really know the cache line size, architecturally it would
be at least 16 bytes, but all implementations I found have 64 or 128
bytes. Configuring tulip for 32-byte lines as we do on ARM32 seems to
be the safe but slow default, and nobody who cares about performance these
days would use a tulip chip anyway, so we can just use that.

To save the next person the job of trying to find out what this is for
and picking a default for their architecture just to kill off the warning,
I'm now removing the preprocessor #warning and turning it into a pr_warn
or dev_warn that prints the equivalent information when the driver gets
loaded.

Signed-off-by: Arnd Bergmann &lt;arnd@arndb.de&gt;
Acked-by: Grant Grundler &lt;grundler@parisc-linux.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>hostap: avoid uninitialized variable use in hfa384x_get_rid</title>
<updated>2017-04-30T03:49:16+00:00</updated>
<author>
<name>Arnd Bergmann</name>
<email>arnd@arndb.de</email>
</author>
<published>2016-01-28T21:58:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=83b7c38b1a3d06439a39f081e299fe98d7aa4014'/>
<id>urn:sha1:83b7c38b1a3d06439a39f081e299fe98d7aa4014</id>
<content type='text'>
commit 48dc5fb3ba53b20418de8514700f63d88c5de3a3 upstream.

The driver reads a value from hfa384x_from_bap(), which may fail,
and then assigns the value to a local variable. gcc detects that
in in the failure case, the 'rlen' variable now contains
uninitialized data:

In file included from ../drivers/net/wireless/intersil/hostap/hostap_pci.c:220:0:
drivers/net/wireless/intersil/hostap/hostap_hw.c: In function 'hfa384x_get_rid':
drivers/net/wireless/intersil/hostap/hostap_hw.c:842:5: warning: 'rec' may be used uninitialized in this function [-Wmaybe-uninitialized]
  if (le16_to_cpu(rec.len) == 0) {

This restructures the function as suggested by Russell King, to
make it more readable and get more reliable error handling, by
handling each failure mode using a goto.

Signed-off-by: Arnd Bergmann &lt;arnd@arndb.de&gt;
Signed-off-by: Kalle Valo &lt;kvalo@codeaurora.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>misc: ioc4: simplify wave period measurement in clock_calibrate</title>
<updated>2017-04-30T03:49:16+00:00</updated>
<author>
<name>Richard Leitner</name>
<email>dev@g0hl1n.net</email>
</author>
<published>2014-12-08T15:28:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=b0d69335ca0b3f8c68aea40c532b598c673c4890'/>
<id>urn:sha1:b0d69335ca0b3f8c68aea40c532b598c673c4890</id>
<content type='text'>
commit 769105aa740dc0428f2585ec99c457d30aaab364 upstream.

The loop for measuring the square wave periods over some cycles is
refactored to be more easily readable. This includes avoiding a
"by-hand-implemented" for loop with a "real" one and adding some
comments.

Furthermore the following compiler warning is avoided by this patch:
drivers/misc/ioc4.c: In function ‘ioc4_probe’:
drivers/misc/ioc4.c:194:16: warning: ‘start’ may be used uninitialized
in this function [-Wmaybe-uninitialized]
  period = (end - start) /
                ^
drivers/misc/ioc4.c:148:11: note: ‘start’ was declared here
  uint64_t start, end, period;
           ^

Signed-off-by: Richard Leitner &lt;dev@g0hl1n.net&gt;
Acked-by: Arnd Bergmann &lt;arnd@arndb.de&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>net: vxge: avoid unused function warnings</title>
<updated>2017-04-30T03:49:16+00:00</updated>
<author>
<name>Arnd Bergmann</name>
<email>arnd@arndb.de</email>
</author>
<published>2016-01-29T11:39:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=db65717e7d005b32a6d03858720844c39bcef0d2'/>
<id>urn:sha1:db65717e7d005b32a6d03858720844c39bcef0d2</id>
<content type='text'>
commit 57e7c8cef224af166b8ec932b5e383641418c005 upstream.

When CONFIG_PCI_MSI is disabled, we get warnings about unused functions
in the vxge driver:

drivers/net/ethernet/neterion/vxge/vxge-main.c:2121:13: warning: 'adaptive_coalesce_tx_interrupts' defined but not used [-Wunused-function]
drivers/net/ethernet/neterion/vxge/vxge-main.c:2149:13: warning: 'adaptive_coalesce_rx_interrupts' defined but not used [-Wunused-function]

We could add another #ifdef here, but it's nicer to avoid those warnings
for good by converting the existing #ifdef to if(IS_ENABLED()), which has
the same effect but provides better compile-time coverage in general,
and lets the compiler understand better when the function is intentionally
unused.

Signed-off-by: Arnd Bergmann &lt;arnd@arndb.de&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>tty: nozomi: avoid a harmless gcc warning</title>
<updated>2017-04-30T03:49:16+00:00</updated>
<author>
<name>Arnd Bergmann</name>
<email>arnd@arndb.de</email>
</author>
<published>2016-01-25T21:54:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=c59bad247c60bb54c09c771ef06ba7a434bff7be'/>
<id>urn:sha1:c59bad247c60bb54c09c771ef06ba7a434bff7be</id>
<content type='text'>
commit a4f642a8a3c2838ad09fe8313d45db46600e1478 upstream.

The nozomi wireless data driver has its own helper function to
transfer data from a FIFO, doing an extra byte swap on big-endian
architectures, presumably to bring the data back into byte-serial
order after readw() or readl() perform their implicit byteswap.

This helper function is used in the receive_data() function to
first read the length into a 32-bit variable, which causes
a compile-time warning:

drivers/tty/nozomi.c: In function 'receive_data':
drivers/tty/nozomi.c:857:9: warning: 'size' may be used uninitialized in this function [-Wmaybe-uninitialized]

The problem is that gcc is unsure whether the data was actually
read or not. We know that it is at this point, so we can replace
it with a single readl() to shut up that warning.

I am leaving the byteswap in there, to preserve the existing
behavior, even though this seems fishy: Reading the length of
the data into a cpu-endian variable should normally not use
a second byteswap on big-endian systems, unless the hardware
is aware of the CPU endianess.

There appears to be a lot more confusion about endianess in this
driver, so it probably has not worked on big-endian systems in
a long time, if ever, and I have no way to test it. It's well
possible that this driver has not been used by anyone in a while,
the last patch that looks like it was tested on the hardware is
from 2008.

Signed-off-by: Arnd Bergmann &lt;arnd@arndb.de&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
</feed>
