* [PATCH] net/fec: check id_entry pointer before using it
@ 2011-03-09 2:50 Jason Liu
2011-03-09 5:56 ` Shawn Guo
2011-03-09 8:26 ` Wolfram Sang
0 siblings, 2 replies; 5+ messages in thread
From: Jason Liu @ 2011-03-09 2:50 UTC (permalink / raw)
To: linux-arm-kernel
The id_entry will possibly be NULL, So, need check
id_entry and make sure it not NULL before using it.
Signed-off-by: Jason Liu <r64343@freescale.com>
---
drivers/net/fec.c | 12 ++++++------
1 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/drivers/net/fec.c b/drivers/net/fec.c
index cd0282d..e97ee0f 100644
--- a/drivers/net/fec.c
+++ b/drivers/net/fec.c
@@ -294,7 +294,7 @@ fec_enet_start_xmit(struct sk_buff *skb, struct net_device *dev)
* the system that it's running on. As the result, driver has to
* swap every frame going to and coming from the controller.
*/
- if (id_entry->driver_data & FEC_QUIRK_SWAP_FRAME)
+ if (id_entry && id_entry->driver_data & FEC_QUIRK_SWAP_FRAME)
swap_buffer(bufaddr, skb->len);
/* Save skb pointer */
@@ -530,7 +530,7 @@ fec_enet_rx(struct net_device *dev)
dma_unmap_single(NULL, bdp->cbd_bufaddr, bdp->cbd_datlen,
DMA_FROM_DEVICE);
- if (id_entry->driver_data & FEC_QUIRK_SWAP_FRAME)
+ if (id_entry && id_entry->driver_data & FEC_QUIRK_SWAP_FRAME)
swap_buffer(data, pkt_len);
/* This does 16 byte alignment, exactly what we need.
@@ -809,7 +809,7 @@ static int fec_enet_mii_init(struct platform_device *pdev)
* mdio interface in board design, and need to be configured by
* fec0 mii_bus.
*/
- if ((id_entry->driver_data & FEC_QUIRK_ENET_MAC) && pdev->id) {
+ if (id_entry && (id_entry->driver_data & FEC_QUIRK_ENET_MAC) && pdev->id) {
/* fec1 uses fec0 mii_bus */
fep->mii_bus = fec0_mii_bus;
return 0;
@@ -852,7 +852,7 @@ static int fec_enet_mii_init(struct platform_device *pdev)
goto err_out_free_mdio_irq;
/* save fec0 mii_bus */
- if (id_entry->driver_data & FEC_QUIRK_ENET_MAC)
+ if (id_entry && id_entry->driver_data & FEC_QUIRK_ENET_MAC)
fec0_mii_bus = fep->mii_bus;
return 0;
@@ -1239,7 +1239,7 @@ fec_restart(struct net_device *dev, int duplex)
* enet-mac reset will reset mac address registers too,
* so need to reconfigure it.
*/
- if (id_entry->driver_data & FEC_QUIRK_ENET_MAC) {
+ if (id_entry && id_entry->driver_data & FEC_QUIRK_ENET_MAC) {
memcpy(&temp_mac, dev->dev_addr, ETH_ALEN);
writel(cpu_to_be32(temp_mac[0]), fep->hwp + FEC_ADDR_LOW);
writel(cpu_to_be32(temp_mac[1]), fep->hwp + FEC_ADDR_HIGH);
@@ -1295,7 +1295,7 @@ fec_restart(struct net_device *dev, int duplex)
* The phy interface and speed need to get configured
* differently on enet-mac.
*/
- if (id_entry->driver_data & FEC_QUIRK_ENET_MAC) {
+ if (id_entry && id_entry->driver_data & FEC_QUIRK_ENET_MAC) {
val = readl(fep->hwp + FEC_R_CNTRL);
/* MII or RMII */
--
1.7.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH] net/fec: check id_entry pointer before using it
2011-03-09 2:50 [PATCH] net/fec: check id_entry pointer before using it Jason Liu
@ 2011-03-09 5:56 ` Shawn Guo
2011-03-09 8:26 ` Wolfram Sang
1 sibling, 0 replies; 5+ messages in thread
From: Shawn Guo @ 2011-03-09 5:56 UTC (permalink / raw)
To: linux-arm-kernel
Hi Jason,
On Wed, Mar 09, 2011 at 10:50:04AM +0800, Jason Liu wrote:
> The id_entry will possibly be NULL, So, need check
> id_entry and make sure it not NULL before using it.
>
> Signed-off-by: Jason Liu <r64343@freescale.com>
> ---
> drivers/net/fec.c | 12 ++++++------
> 1 files changed, 6 insertions(+), 6 deletions(-)
>
You need to cc list: netdev at vger.kernel.org
--
Regards,
Shawn
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH] net/fec: check id_entry pointer before using it
2011-03-09 2:50 [PATCH] net/fec: check id_entry pointer before using it Jason Liu
2011-03-09 5:56 ` Shawn Guo
@ 2011-03-09 8:26 ` Wolfram Sang
2011-03-10 2:41 ` Jason Liu
1 sibling, 1 reply; 5+ messages in thread
From: Wolfram Sang @ 2011-03-09 8:26 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, Mar 09, 2011 at 10:50:04AM +0800, Jason Liu wrote:
> The id_entry will possibly be NULL, So, need check
> id_entry and make sure it not NULL before using it.
When does it become NULL?
--
Pengutronix e.K. | Wolfram Sang |
Industrial Linux Solutions | http://www.pengutronix.de/ |
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20110309/7a8fd09f/attachment.sig>
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH] net/fec: check id_entry pointer before using it
2011-03-09 8:26 ` Wolfram Sang
@ 2011-03-10 2:41 ` Jason Liu
2011-03-12 16:11 ` Wolfram Sang
0 siblings, 1 reply; 5+ messages in thread
From: Jason Liu @ 2011-03-10 2:41 UTC (permalink / raw)
To: linux-arm-kernel
Hi, Wolfram Sang,
2011/3/9 Wolfram Sang <w.sang@pengutronix.de>:
> On Wed, Mar 09, 2011 at 10:50:04AM +0800, Jason Liu wrote:
>> The id_entry will possibly be NULL, So, need check
>> id_entry and make sure it not NULL before using it.
>
> When does it become NULL?
look at the code:drivers/base/platform.c
static int platform_match(struct device *dev, struct device_driver *drv)
{
struct platform_device *pdev = to_platform_device(dev);
struct platform_driver *pdrv = to_platform_driver(drv);
/* Attempt an OF style match first */
if (of_driver_match_device(dev, drv))
return 1;
/* Then try to match against the id table */
if (pdrv->id_table)
return platform_match_id(pdrv->id_table, pdev) != NULL;
/* fall-back to driver name match */
return (strcmp(pdev->name, drv->name) == 0);
}
If OF style match first succeed, the function will return and the
pdev->id_entry will not get set and it's NULL.
BR,
Jason
>
> --
> Pengutronix e.K. ? ? ? ? ? ? ? ? ? ? ? ? ? | Wolfram Sang ? ? ? ? ? ? ? ?|
> Industrial Linux Solutions ? ? ? ? ? ? ? ? | http://www.pengutronix.de/ ?|
>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.10 (GNU/Linux)
>
> iEYEARECAAYFAk13OZkACgkQD27XaX1/VRsZgwCeKCNK0ufdrV2186pKO3jD9qfI
> HcQAn1zZ+Rmv+rpHHQH9JNyMQitNQdXV
> =Ha2Y
> -----END PGP SIGNATURE-----
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
>
>
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH] net/fec: check id_entry pointer before using it
2011-03-10 2:41 ` Jason Liu
@ 2011-03-12 16:11 ` Wolfram Sang
0 siblings, 0 replies; 5+ messages in thread
From: Wolfram Sang @ 2011-03-12 16:11 UTC (permalink / raw)
To: linux-arm-kernel
On Thu, Mar 10, 2011 at 10:41:37AM +0800, Jason Liu wrote:
> Hi, Wolfram Sang,
>
> 2011/3/9 Wolfram Sang <w.sang@pengutronix.de>:
> > On Wed, Mar 09, 2011 at 10:50:04AM +0800, Jason Liu wrote:
> >> The id_entry will possibly be NULL, So, need check
> >> id_entry and make sure it not NULL before using it.
> >
> > When does it become NULL?
>
> look at the code:drivers/base/platform.c
>
> static int platform_match(struct device *dev, struct device_driver *drv)
> {
> struct platform_device *pdev = to_platform_device(dev);
> struct platform_driver *pdrv = to_platform_driver(drv);
>
> /* Attempt an OF style match first */
> if (of_driver_match_device(dev, drv))
> return 1;
>
> /* Then try to match against the id table */
> if (pdrv->id_table)
> return platform_match_id(pdrv->id_table, pdev) != NULL;
>
> /* fall-back to driver name match */
> return (strcmp(pdev->name, drv->name) == 0);
> }
>
> If OF style match first succeed, the function will return and the
> pdev->id_entry will not get set and it's NULL.
This is correct. Yet, OF might be interested in using the flags from the
fec-driver, too. If there will be a user (there is none yet), part of the
update patch probably should add something like this to probe:
if (id_entry)
fec_flags = id_entry->driver_data;
else if (of_id)
fec_flags = of_id->data;
else
/* Deal with it... */
Makes sense?
Regards,
Wolfram
--
Pengutronix e.K. | Wolfram Sang |
Industrial Linux Solutions | http://www.pengutronix.de/ |
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20110312/4b2d6f44/attachment.sig>
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2011-03-12 16:11 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-03-09 2:50 [PATCH] net/fec: check id_entry pointer before using it Jason Liu
2011-03-09 5:56 ` Shawn Guo
2011-03-09 8:26 ` Wolfram Sang
2011-03-10 2:41 ` Jason Liu
2011-03-12 16:11 ` Wolfram Sang
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).