<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel/linux.git/drivers/net/ethernet/micrel, branch v3.4.52</title>
<subtitle>Linux kernel stable tree (mirror)</subtitle>
<id>https://git.radix-linux.su/kernel/linux.git/atom?h=v3.4.52</id>
<link rel='self' href='https://git.radix-linux.su/kernel/linux.git/atom?h=v3.4.52'/>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/'/>
<updated>2013-04-05T17:04:41+00:00</updated>
<entry>
<title>ks8851: Fix interpretation of rxlen field.</title>
<updated>2013-04-05T17:04:41+00:00</updated>
<author>
<name>Max.Nekludov@us.elster.com</name>
<email>Max.Nekludov@us.elster.com</email>
</author>
<published>2013-03-29T05:27:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=5afd933cc476e33339eeca8928de1357857657ea'/>
<id>urn:sha1:5afd933cc476e33339eeca8928de1357857657ea</id>
<content type='text'>
[ Upstream commit 14bc435ea54cb888409efb54fc6b76c13ef530e9 ]

According to the Datasheet (page 52):
15-12 Reserved
11-0 RXBC Receive Byte Count
This field indicates the present received frame byte size.

The code has a bug:
                 rxh = ks8851_rdreg32(ks, KS_RXFHSR);
                 rxstat = rxh &amp; 0xffff;
                 rxlen = rxh &gt;&gt; 16; // BUG!!! 0xFFF mask should be applied

Signed-off-by: Max Nekludov &lt;Max.Nekludov@us.elster.com&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>ks8851: Update link status during link change interrupt</title>
<updated>2012-05-11T22:23:34+00:00</updated>
<author>
<name>Stephen Boyd</name>
<email>sboyd@codeaurora.org</email>
</author>
<published>2012-05-10T12:51:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=062e55e3960062fc2fb62a7274b4c253003eba73'/>
<id>urn:sha1:062e55e3960062fc2fb62a7274b4c253003eba73</id>
<content type='text'>
If a link change interrupt comes in we just clear the interrupt
and continue along without notifying the upper networking layers
that the link has changed. Use the mii_check_link() function to
update the link status whenever a link change interrupt occurs.

Cc: Ben Dooks &lt;ben-linux@fluff.org&gt;
Signed-off-by: Stephen Boyd &lt;sboyd@codeaurora.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>ks8851: Fix request_irq/free_irq mismatch</title>
<updated>2012-04-21T19:55:31+00:00</updated>
<author>
<name>Matt Renzelmann</name>
<email>mjr@cs.wisc.edu</email>
</author>
<published>2012-04-19T07:17:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=e8195b24feb208f6e944e7542779f4397776794d'/>
<id>urn:sha1:e8195b24feb208f6e944e7542779f4397776794d</id>
<content type='text'>
The dev_id parameter passed to free_irq needs to match the one passed
to the corresponding request_irq.

Signed-off-by: Matt Renzelmann &lt;mjr@cs.wisc.edu&gt;
Acked-by: Stephen Boyd &lt;sboyd@codeaurora.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>ks8851: Fix mutex deadlock in ks8851_net_stop()</title>
<updated>2012-04-21T19:33:14+00:00</updated>
<author>
<name>Stephen Boyd</name>
<email>sboyd@codeaurora.org</email>
</author>
<published>2012-04-18T17:25:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=c5a99937a9cf74a623384023201a7d98b51e7e3b'/>
<id>urn:sha1:c5a99937a9cf74a623384023201a7d98b51e7e3b</id>
<content type='text'>
There is a potential deadlock scenario when the ks8851 driver
is removed. The interrupt handler schedules a workqueue which
acquires a mutex that ks8851_net_stop() also acquires before
flushing the workqueue. Previously lockdep wouldn't be able
to find this problem but now that it has the support we can
trigger this lockdep warning by rmmoding the driver after
an ifconfig up.

Fix the possible deadlock by disabling the interrupts in
the chip and then release the lock across the workqueue
flushing. The mutex is only there to proect the registers
anyway so this should be ok.

=======================================================
[ INFO: possible circular locking dependency detected ]
3.0.21-00021-g8b33780-dirty #2911
-------------------------------------------------------
rmmod/125 is trying to acquire lock:
 ((&amp;ks-&gt;irq_work)){+.+...}, at: [&lt;c019e0b8&gt;] flush_work+0x0/0xac

but task is already holding lock:
 (&amp;ks-&gt;lock){+.+...}, at: [&lt;bf00b850&gt;] ks8851_net_stop+0x64/0x138 [ks8851]

which lock already depends on the new lock.

the existing dependency chain (in reverse order) is:

-&gt; #1 (&amp;ks-&gt;lock){+.+...}:
       [&lt;c01b89c8&gt;] __lock_acquire+0x940/0x9f8
       [&lt;c01b9058&gt;] lock_acquire+0x10c/0x130
       [&lt;c083dbec&gt;] mutex_lock_nested+0x68/0x3dc
       [&lt;bf00bd48&gt;] ks8851_irq_work+0x24/0x46c [ks8851]
       [&lt;c019c580&gt;] process_one_work+0x2d8/0x518
       [&lt;c019cb98&gt;] worker_thread+0x220/0x3a0
       [&lt;c01a2ad4&gt;] kthread+0x88/0x94
       [&lt;c0107008&gt;] kernel_thread_exit+0x0/0x8

-&gt; #0 ((&amp;ks-&gt;irq_work)){+.+...}:
       [&lt;c01b7984&gt;] validate_chain+0x914/0x1018
       [&lt;c01b89c8&gt;] __lock_acquire+0x940/0x9f8
       [&lt;c01b9058&gt;] lock_acquire+0x10c/0x130
       [&lt;c019e104&gt;] flush_work+0x4c/0xac
       [&lt;bf00b858&gt;] ks8851_net_stop+0x6c/0x138 [ks8851]
       [&lt;c06b209c&gt;] __dev_close_many+0x98/0xcc
       [&lt;c06b2174&gt;] dev_close_many+0x68/0xd0
       [&lt;c06b22ec&gt;] rollback_registered_many+0xcc/0x2b8
       [&lt;c06b2554&gt;] rollback_registered+0x28/0x34
       [&lt;c06b25b8&gt;] unregister_netdevice_queue+0x58/0x7c
       [&lt;c06b25f4&gt;] unregister_netdev+0x18/0x20
       [&lt;bf00c1f4&gt;] ks8851_remove+0x64/0xb4 [ks8851]
       [&lt;c049ddf0&gt;] spi_drv_remove+0x18/0x1c
       [&lt;c0468e98&gt;] __device_release_driver+0x7c/0xbc
       [&lt;c0468f64&gt;] driver_detach+0x8c/0xb4
       [&lt;c0467f00&gt;] bus_remove_driver+0xb8/0xe8
       [&lt;c01c1d20&gt;] sys_delete_module+0x1e8/0x27c
       [&lt;c0105ec0&gt;] ret_fast_syscall+0x0/0x3c

other info that might help us debug this:

 Possible unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  lock(&amp;ks-&gt;lock);
                               lock((&amp;ks-&gt;irq_work));
                               lock(&amp;ks-&gt;lock);
  lock((&amp;ks-&gt;irq_work));

 *** DEADLOCK ***

4 locks held by rmmod/125:
 #0:  (&amp;__lockdep_no_validate__){+.+.+.}, at: [&lt;c0468f44&gt;] driver_detach+0x6c/0xb4
 #1:  (&amp;__lockdep_no_validate__){+.+.+.}, at: [&lt;c0468f50&gt;] driver_detach+0x78/0xb4
 #2:  (rtnl_mutex){+.+.+.}, at: [&lt;c06b25e8&gt;] unregister_netdev+0xc/0x20
 #3:  (&amp;ks-&gt;lock){+.+...}, at: [&lt;bf00b850&gt;] ks8851_net_stop+0x64/0x138 [ks8851]

Cc: Ben Dooks &lt;ben-linux@fluff.org&gt;
Signed-off-by: Stephen Boyd &lt;sboyd@codeaurora.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>ksz884x: don't copy too much in netdev_set_mac_address()</title>
<updated>2012-04-19T17:25:03+00:00</updated>
<author>
<name>Dan Carpenter</name>
<email>dan.carpenter@oracle.com</email>
</author>
<published>2012-04-19T07:00:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=716af4abd6e6370226f567af50bfaca274515980'/>
<id>urn:sha1:716af4abd6e6370226f567af50bfaca274515980</id>
<content type='text'>
MAX_ADDR_LEN is 32.  ETH_ALEN is 6.  mac-&gt;sa_data is a 14 byte array, so
the memcpy() is doing a read past the end of the array.  I asked about
this on netdev and Ben Hutchings told me it's supposed to be copying
ETH_ALEN bytes (thanks Ben).

Signed-off-by: Dan Carpenter &lt;dan.carpenter@oracle.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>net/ethernet: ks8851_mll fix rx frame buffer overflow</title>
<updated>2012-04-14T19:21:27+00:00</updated>
<author>
<name>Davide Ciminaghi</name>
<email>ciminaghi@gnudd.com</email>
</author>
<published>2012-04-13T04:48:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=8a9a0ea6032186e3030419262678d652b88bf6a8'/>
<id>urn:sha1:8a9a0ea6032186e3030419262678d652b88bf6a8</id>
<content type='text'>
At the beginning of ks_rcv(), a for loop retrieves the
header information relevant to all the frames stored
in the mac's internal buffers. The number of pending
frames is stored as an 8 bits field in KS_RXFCTR.
If interrupts are disabled long enough to allow for more than
32 frames to accumulate in the MAC's internal buffers, a buffer
overflow occurs.
This patch fixes the problem by making the
driver's frame_head_info buffer big enough.
Well actually, since the chip appears to have 12K of
internal rx buffers and the shortest ethernet frame should
be 64 bytes long, maybe the limit could be set to
12*1024/64 = 192 frames, but 255 should be safer.

Signed-off-by: Davide Ciminaghi &lt;ciminaghi@gnudd.com&gt;
Signed-off-by: Raffaele Recalcati &lt;raffaele.recalcati@bticino.it&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>ks8851: Fix missing mutex_lock/unlock</title>
<updated>2012-04-13T18:04:47+00:00</updated>
<author>
<name>Matt Renzelmann</name>
<email>mjr@cs.wisc.edu</email>
</author>
<published>2012-04-13T07:59:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=51c61a2838c33dab7b6659b9a3e008bb1b40bc9b'/>
<id>urn:sha1:51c61a2838c33dab7b6659b9a3e008bb1b40bc9b</id>
<content type='text'>
Move the ks8851_rdreg16 call above the call to request_irq and cache
the result for subsequent repeated use.  A spurious interrupt may
otherwise cause a crash.  Thanks to Stephen Boyd, Flavio Leitner, and
Ben Hutchings for feedback.

Signed-off-by: Matt Renzelmann &lt;mjr@cs.wisc.edu&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>Merge branch 'next' of git://git.infradead.org/users/vkoul/slave-dma</title>
<updated>2012-03-29T22:34:57+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2012-03-29T22:34:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=ef08e78268423fc4d7fbc3e54bd9a67fc8da7cc5'/>
<id>urn:sha1:ef08e78268423fc4d7fbc3e54bd9a67fc8da7cc5</id>
<content type='text'>
Pull slave-dmaengine update from Vinod Koul:
 "This includes the cookie cleanup by Russell, the addition of context
  parameter for dmaengine APIs, more arm dmaengine driver cleanup by
  moving code to dmaengine, this time for imx by Javier and pl330 by
  Boojin along with the usual driver fixes."

Fix up some fairly trivial conflicts with various other cleanups.

* 'next' of git://git.infradead.org/users/vkoul/slave-dma: (67 commits)
  dmaengine: imx: fix the build failure on x86_64
  dmaengine: i.MX: Fix merge of cookie branch.
  dmaengine: i.MX: Add support for interleaved transfers.
  dmaengine: imx-dma: use 'dev_dbg' and 'dev_warn' for messages.
  dmaengine: imx-dma: remove 'imx_dmav1_baseaddr' and 'dma_clk'.
  dmaengine: imx-dma: remove unused arg of imxdma_sg_next.
  dmaengine: imx-dma: remove internal structure.
  dmaengine: imx-dma: remove 'resbytes' field of 'internal' structure.
  dmaengine: imx-dma: remove 'in_use' field of 'internal' structure.
  dmaengine: imx-dma: remove sg member from internal structure.
  dmaengine: imx-dma: remove 'imxdma_setup_sg_hw' function.
  dmaengine: imx-dma: remove 'imxdma_config_channel_hw' function.
  dmaengine: imx-dma: remove 'imxdma_setup_mem2mem_hw' function.
  dmaengine: imx-dma: remove dma_mode member of internal structure.
  dmaengine: imx-dma: remove data member from internal structure.
  dmaengine: imx-dma: merge old dma-v1.c with imx-dma.c
  dmaengine: at_hdmac: add slave config operation
  dmaengine: add context parameter to prep_slave_sg and prep_dma_cyclic
  dmaengine/dma_slave: introduce inline wrappers
  dma: imx-sdma: Treat firmware messages as warnings instead of erros
  ...
</content>
</entry>
<entry>
<title>dmaengine/dma_slave: introduce inline wrappers</title>
<updated>2012-03-21T13:50:22+00:00</updated>
<author>
<name>Alexandre Bounine</name>
<email>alexandre.bounine@idt.com</email>
</author>
<published>2012-03-08T21:11:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=16052827d98fbc13c31ebad560af4bd53e2b4dd5'/>
<id>urn:sha1:16052827d98fbc13c31ebad560af4bd53e2b4dd5</id>
<content type='text'>
Add inline wrappers for device_prep_slave_sg() and device_prep_dma_cyclic()
interfaces to hide new parameter from current users of affected interfaces.
Convert current users to use new wrappers instead of direct calls.
Suggested by Russell King [https://lkml.org/lkml/2012/2/3/269].

Signed-off-by: Alexandre Bounine &lt;alexandre.bounine@idt.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@linux.intel.com&gt;
</content>
</entry>
<entry>
<title>Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net</title>
<updated>2012-02-27T02:55:51+00:00</updated>
<author>
<name>David S. Miller</name>
<email>davem@davemloft.net</email>
</author>
<published>2012-02-27T02:55:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=ff4783ce78c08d2990126ce1874250ae8e72bbd2'/>
<id>urn:sha1:ff4783ce78c08d2990126ce1874250ae8e72bbd2</id>
<content type='text'>
Conflicts:
	drivers/net/ethernet/sfc/rx.c

Overlapping changes in drivers/net/ethernet/sfc/rx.c, one to change
the rx_buf-&gt;is_page boolean into a set of u16 flags, and another to
adjust how -&gt;ip_summed is initialized.

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
</feed>
