* [PATCH net 0/2] net: ethoc: Error path and transmit fixes @ 2016-07-11 17:04 Florian Fainelli 2016-07-11 17:04 ` [PATCH net 1/2] net: ethoc: Fix early error paths Florian Fainelli 2016-07-11 17:04 ` [PATCH net 2/2] net: ethoc: Correctly pad short packets Florian Fainelli 0 siblings, 2 replies; 5+ messages in thread From: Florian Fainelli @ 2016-07-11 17:04 UTC (permalink / raw) To: netdev Cc: davem, jcmvbkbc, colin.king, tklauser, thierry.reding, andrew, Florian Fainelli Hi all, This patch series contains two patches for the ethoc driver while testing on a TS-7300 board where ethoc is provided by an on-board FPGA. First patch was cooked after chasing crashes with invalid resources passed to the driver. Second patch was cooked after seeing that an interface configured with IP 192.168.2.2 was sending ARP packets for 192.168.0.0, no wonder why it could not work. I don't have access to any other platform using an ethoc interface so it could be good to some testing on Xtensa for instance. Florian Fainelli (2): net: ethoc: Fix early error paths net: ethoc: Correctly pad short packets drivers/net/ethernet/ethoc.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) -- 2.7.4 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH net 1/2] net: ethoc: Fix early error paths 2016-07-11 17:04 [PATCH net 0/2] net: ethoc: Error path and transmit fixes Florian Fainelli @ 2016-07-11 17:04 ` Florian Fainelli 2016-07-11 17:11 ` Andrew Lunn 2016-07-11 17:04 ` [PATCH net 2/2] net: ethoc: Correctly pad short packets Florian Fainelli 1 sibling, 1 reply; 5+ messages in thread From: Florian Fainelli @ 2016-07-11 17:04 UTC (permalink / raw) To: netdev Cc: davem, jcmvbkbc, colin.king, tklauser, thierry.reding, andrew, Florian Fainelli In case any operation fails before we can successfully go the point where we would register a MDIO bus, we would be going to an error label which involves unregistering then freeing this yet to be created MDIO bus. Update all error paths to go to label free which is the only one valid until either the clock is enabled, or the MDIO bus is allocated and registered. This fixes kernel panics such as this one: Fixes: a1702857724f ("net: Add support for the OpenCores 10/100 Mbps Ethernet MAC.") Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> --- drivers/net/ethernet/ethoc.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/net/ethernet/ethoc.c b/drivers/net/ethernet/ethoc.c index 4edb98c3c6c7..06ae14a8e946 100644 --- a/drivers/net/ethernet/ethoc.c +++ b/drivers/net/ethernet/ethoc.c @@ -1086,7 +1086,7 @@ static int ethoc_probe(struct platform_device *pdev) if (!priv->iobase) { dev_err(&pdev->dev, "cannot remap I/O memory space\n"); ret = -ENXIO; - goto error; + goto free; } if (netdev->mem_end) { @@ -1095,7 +1095,7 @@ static int ethoc_probe(struct platform_device *pdev) if (!priv->membase) { dev_err(&pdev->dev, "cannot remap memory space\n"); ret = -ENXIO; - goto error; + goto free; } } else { /* Allocate buffer memory */ @@ -1106,7 +1106,7 @@ static int ethoc_probe(struct platform_device *pdev) dev_err(&pdev->dev, "cannot allocate %dB buffer\n", buffer_size); ret = -ENOMEM; - goto error; + goto free; } netdev->mem_end = netdev->mem_start + buffer_size; priv->dma_alloc = buffer_size; @@ -1120,7 +1120,7 @@ static int ethoc_probe(struct platform_device *pdev) 128, (netdev->mem_end - netdev->mem_start + 1) / ETHOC_BUFSIZ); if (num_bd < 4) { ret = -ENODEV; - goto error; + goto free; } priv->num_bd = num_bd; /* num_tx must be a power of two */ @@ -1133,7 +1133,7 @@ static int ethoc_probe(struct platform_device *pdev) priv->vma = devm_kzalloc(&pdev->dev, num_bd*sizeof(void *), GFP_KERNEL); if (!priv->vma) { ret = -ENOMEM; - goto error; + goto free; } /* Allow the platform setup code to pass in a MAC address. */ -- 2.7.4 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH net 1/2] net: ethoc: Fix early error paths 2016-07-11 17:04 ` [PATCH net 1/2] net: ethoc: Fix early error paths Florian Fainelli @ 2016-07-11 17:11 ` Andrew Lunn 2016-07-11 17:15 ` Florian Fainelli 0 siblings, 1 reply; 5+ messages in thread From: Andrew Lunn @ 2016-07-11 17:11 UTC (permalink / raw) To: Florian Fainelli Cc: netdev, davem, jcmvbkbc, colin.king, tklauser, thierry.reding On Mon, Jul 11, 2016 at 10:04:10AM -0700, Florian Fainelli wrote: > In case any operation fails before we can successfully go the point > where we would register a MDIO bus, we would be going to an error label > which involves unregistering then freeing this yet to be created MDIO > bus. Update all error paths to go to label free which is the only one > valid until either the clock is enabled, or the MDIO bus is allocated > and registered. This fixes kernel panics such as this one: > > Fixes: a1702857724f ("net: Add support for the OpenCores 10/100 Mbps Ethernet MAC.") Hi Florian Did you intend to paste a panic here? Andrew ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH net 1/2] net: ethoc: Fix early error paths 2016-07-11 17:11 ` Andrew Lunn @ 2016-07-11 17:15 ` Florian Fainelli 0 siblings, 0 replies; 5+ messages in thread From: Florian Fainelli @ 2016-07-11 17:15 UTC (permalink / raw) To: Andrew Lunn; +Cc: netdev, davem, jcmvbkbc, colin.king, tklauser, thierry.reding Hi Andrew, On 07/11/2016 10:11 AM, Andrew Lunn wrote: > On Mon, Jul 11, 2016 at 10:04:10AM -0700, Florian Fainelli wrote: >> In case any operation fails before we can successfully go the point >> where we would register a MDIO bus, we would be going to an error label >> which involves unregistering then freeing this yet to be created MDIO >> bus. Update all error paths to go to label free which is the only one >> valid until either the clock is enabled, or the MDIO bus is allocated >> and registered. This fixes kernel panics such as this one: >> >> Fixes: a1702857724f ("net: Add support for the OpenCores 10/100 Mbps Ethernet MAC.") > > Hi Florian > > Did you intend to paste a panic here? I did, and then realized this was not so helpful since the NULL pointer de-reference was fairly obvious, the driver is also not widely used (AFAICT), I will respin the commit message to remove the last sentence, thanks! -- Florian ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH net 2/2] net: ethoc: Correctly pad short packets 2016-07-11 17:04 [PATCH net 0/2] net: ethoc: Error path and transmit fixes Florian Fainelli 2016-07-11 17:04 ` [PATCH net 1/2] net: ethoc: Fix early error paths Florian Fainelli @ 2016-07-11 17:04 ` Florian Fainelli 1 sibling, 0 replies; 5+ messages in thread From: Florian Fainelli @ 2016-07-11 17:04 UTC (permalink / raw) To: netdev Cc: davem, jcmvbkbc, colin.king, tklauser, thierry.reding, andrew, Florian Fainelli Even though the hardware can be doing zero padding, we want the SKB to be going out on the wire with the appropriate size. This fixes packet truncations observed with e.g: ARP packets. Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> --- drivers/net/ethernet/ethoc.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/net/ethernet/ethoc.c b/drivers/net/ethernet/ethoc.c index 06ae14a8e946..ca678d46c322 100644 --- a/drivers/net/ethernet/ethoc.c +++ b/drivers/net/ethernet/ethoc.c @@ -860,6 +860,11 @@ static netdev_tx_t ethoc_start_xmit(struct sk_buff *skb, struct net_device *dev) unsigned int entry; void *dest; + if (skb_put_padto(skb, ETHOC_ZLEN)) { + dev->stats.tx_errors++; + goto out; + } + if (unlikely(skb->len > ETHOC_BUFSIZ)) { dev->stats.tx_errors++; goto out; -- 2.7.4 ^ permalink raw reply related [flat|nested] 5+ messages in thread
end of thread, other threads:[~2016-07-11 17:15 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2016-07-11 17:04 [PATCH net 0/2] net: ethoc: Error path and transmit fixes Florian Fainelli 2016-07-11 17:04 ` [PATCH net 1/2] net: ethoc: Fix early error paths Florian Fainelli 2016-07-11 17:11 ` Andrew Lunn 2016-07-11 17:15 ` Florian Fainelli 2016-07-11 17:04 ` [PATCH net 2/2] net: ethoc: Correctly pad short packets Florian Fainelli
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).