2020-11-05 18:03:36

by Parshuram Raju Thombare

[permalink] [raw]
Subject: [RESEND PATCH] net: macb: fix NULL dereference due to no pcs_config method

This patch fixes NULL pointer dereference due to NULL pcs_config
in pcs_ops.

Reported-by: Nicolas Ferre <[email protected]>
Link: https://lore.kernel.org/netdev/[email protected]/
Signed-off-by: Parshuram Thombare <[email protected]>
---
drivers/net/ethernet/cadence/macb_main.c | 17 +++++++++++++++--
1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c
index b7bc160..130a5af 100644
--- a/drivers/net/ethernet/cadence/macb_main.c
+++ b/drivers/net/ethernet/cadence/macb_main.c
@@ -633,6 +633,15 @@ static void macb_pcs_an_restart(struct phylink_pcs *pcs)
/* Not supported */
}

+static int macb_pcs_config(struct phylink_pcs *pcs,
+ unsigned int mode,
+ phy_interface_t interface,
+ const unsigned long *advertising,
+ bool permit_pause_to_mac)
+{
+ return 0;
+}
+
static const struct phylink_pcs_ops macb_phylink_usx_pcs_ops = {
.pcs_get_state = macb_usx_pcs_get_state,
.pcs_config = macb_usx_pcs_config,
@@ -642,6 +651,7 @@ static const struct phylink_pcs_ops macb_phylink_usx_pcs_ops = {
static const struct phylink_pcs_ops macb_phylink_pcs_ops = {
.pcs_get_state = macb_pcs_get_state,
.pcs_an_restart = macb_pcs_an_restart,
+ .pcs_config = macb_pcs_config,
};

static void macb_mac_config(struct phylink_config *config, unsigned int mode,
@@ -776,10 +786,13 @@ static int macb_mac_prepare(struct phylink_config *config, unsigned int mode,

if (interface == PHY_INTERFACE_MODE_10GBASER)
bp->phylink_pcs.ops = &macb_phylink_usx_pcs_ops;
- else
+ else if (interface == PHY_INTERFACE_MODE_SGMII)
bp->phylink_pcs.ops = &macb_phylink_pcs_ops;
+ else
+ bp->phylink_pcs.ops = NULL;

- phylink_set_pcs(bp->phylink, &bp->phylink_pcs);
+ if (bp->phylink_pcs.ops)
+ phylink_set_pcs(bp->phylink, &bp->phylink_pcs);

return 0;
}
--
2.7.4


2020-11-06 09:28:47

by Nicolas Ferre

[permalink] [raw]
Subject: Re: [RESEND PATCH] net: macb: fix NULL dereference due to no pcs_config method

On 05/11/2020 at 18:58, Parshuram Thombare wrote:
> This patch fixes NULL pointer dereference due to NULL pcs_config
> in pcs_ops.
>
> Reported-by: Nicolas Ferre <[email protected]>
> Link: https://lore.kernel.org/netdev/[email protected]/
> Signed-off-by: Parshuram Thombare <[email protected]>

Acked-by: Nicolas Ferre <[email protected]>

Thanks Parshuram, best regards,
Nicolas

> ---
> drivers/net/ethernet/cadence/macb_main.c | 17 +++++++++++++++--
> 1 file changed, 15 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c
> index b7bc160..130a5af 100644
> --- a/drivers/net/ethernet/cadence/macb_main.c
> +++ b/drivers/net/ethernet/cadence/macb_main.c
> @@ -633,6 +633,15 @@ static void macb_pcs_an_restart(struct phylink_pcs *pcs)
> /* Not supported */
> }
>
> +static int macb_pcs_config(struct phylink_pcs *pcs,
> + unsigned int mode,
> + phy_interface_t interface,
> + const unsigned long *advertising,
> + bool permit_pause_to_mac)
> +{
> + return 0;
> +}
> +
> static const struct phylink_pcs_ops macb_phylink_usx_pcs_ops = {
> .pcs_get_state = macb_usx_pcs_get_state,
> .pcs_config = macb_usx_pcs_config,
> @@ -642,6 +651,7 @@ static const struct phylink_pcs_ops macb_phylink_usx_pcs_ops = {
> static const struct phylink_pcs_ops macb_phylink_pcs_ops = {
> .pcs_get_state = macb_pcs_get_state,
> .pcs_an_restart = macb_pcs_an_restart,
> + .pcs_config = macb_pcs_config,
> };
>
> static void macb_mac_config(struct phylink_config *config, unsigned int mode,
> @@ -776,10 +786,13 @@ static int macb_mac_prepare(struct phylink_config *config, unsigned int mode,
>
> if (interface == PHY_INTERFACE_MODE_10GBASER)
> bp->phylink_pcs.ops = &macb_phylink_usx_pcs_ops;
> - else
> + else if (interface == PHY_INTERFACE_MODE_SGMII)
> bp->phylink_pcs.ops = &macb_phylink_pcs_ops;
> + else
> + bp->phylink_pcs.ops = NULL;
>
> - phylink_set_pcs(bp->phylink, &bp->phylink_pcs);
> + if (bp->phylink_pcs.ops)
> + phylink_set_pcs(bp->phylink, &bp->phylink_pcs);
>
> return 0;
> }
> --
> 2.7.4
>


--
Nicolas Ferre

2020-11-07 21:26:35

by Jakub Kicinski

[permalink] [raw]
Subject: Re: [RESEND PATCH] net: macb: fix NULL dereference due to no pcs_config method

On Fri, 6 Nov 2020 10:26:59 +0100 Nicolas Ferre wrote:
> On 05/11/2020 at 18:58, Parshuram Thombare wrote:
> > This patch fixes NULL pointer dereference due to NULL pcs_config
> > in pcs_ops.
> >
> > Reported-by: Nicolas Ferre <[email protected]>
> > Link: https://lore.kernel.org/netdev/[email protected]/
> > Signed-off-by: Parshuram Thombare <[email protected]>
>
> Acked-by: Nicolas Ferre <[email protected]>

Applied.

I brought back the fixes tag from the first posting. It's entirely
reasonable to add fixes tags from the tree you're targeting as long
as that tree guarantees commit hashes are stable and won't change on
their way upstream. Which is the case for net and net-next trees.

Thanks!

2020-11-07 21:31:46

by patchwork-bot+netdevbpf

[permalink] [raw]
Subject: Re: [RESEND PATCH] net: macb: fix NULL dereference due to no pcs_config method

Hello:

This patch was applied to netdev/net-next.git (refs/heads/master):

On Thu, 5 Nov 2020 18:58:33 +0100 you wrote:
> This patch fixes NULL pointer dereference due to NULL pcs_config
> in pcs_ops.
>
> Reported-by: Nicolas Ferre <[email protected]>
> Link: https://lore.kernel.org/netdev/[email protected]/
> Signed-off-by: Parshuram Thombare <[email protected]>
>
> [...]

Here is the summary with links:
- [RESEND] net: macb: fix NULL dereference due to no pcs_config method
https://git.kernel.org/netdev/net-next/c/0012eeb370f8

You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html