mirror of https://gitee.com/openkylin/linux.git
[PATCH] ppc32: Check return of ppc_sys_get_pdata before accessing pointer
Ensure that the returned pointer from ppc_sys_get_pdata is not NULL before we start using it. This handles any cases where we have variants of processors on the same board with different functionality. Signed-off-by: Kumar Gala <kumar.gala@freescale.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
09ffd94fb1
commit
62aa751d16
|
@ -94,20 +94,24 @@ mpc834x_sys_setup_arch(void)
|
|||
|
||||
/* setup the board related information for the enet controllers */
|
||||
pdata = (struct gianfar_platform_data *) ppc_sys_get_pdata(MPC83xx_TSEC1);
|
||||
pdata->board_flags = FSL_GIANFAR_BRD_HAS_PHY_INTR;
|
||||
pdata->interruptPHY = MPC83xx_IRQ_EXT1;
|
||||
pdata->phyid = 0;
|
||||
/* fixup phy address */
|
||||
pdata->phy_reg_addr += binfo->bi_immr_base;
|
||||
memcpy(pdata->mac_addr, binfo->bi_enetaddr, 6);
|
||||
if (pdata) {
|
||||
pdata->board_flags = FSL_GIANFAR_BRD_HAS_PHY_INTR;
|
||||
pdata->interruptPHY = MPC83xx_IRQ_EXT1;
|
||||
pdata->phyid = 0;
|
||||
/* fixup phy address */
|
||||
pdata->phy_reg_addr += binfo->bi_immr_base;
|
||||
memcpy(pdata->mac_addr, binfo->bi_enetaddr, 6);
|
||||
}
|
||||
|
||||
pdata = (struct gianfar_platform_data *) ppc_sys_get_pdata(MPC83xx_TSEC2);
|
||||
pdata->board_flags = FSL_GIANFAR_BRD_HAS_PHY_INTR;
|
||||
pdata->interruptPHY = MPC83xx_IRQ_EXT2;
|
||||
pdata->phyid = 1;
|
||||
/* fixup phy address */
|
||||
pdata->phy_reg_addr += binfo->bi_immr_base;
|
||||
memcpy(pdata->mac_addr, binfo->bi_enet1addr, 6);
|
||||
if (pdata) {
|
||||
pdata->board_flags = FSL_GIANFAR_BRD_HAS_PHY_INTR;
|
||||
pdata->interruptPHY = MPC83xx_IRQ_EXT2;
|
||||
pdata->phyid = 1;
|
||||
/* fixup phy address */
|
||||
pdata->phy_reg_addr += binfo->bi_immr_base;
|
||||
memcpy(pdata->mac_addr, binfo->bi_enet1addr, 6);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_BLK_DEV_INITRD
|
||||
if (initrd_start)
|
||||
|
|
|
@ -92,28 +92,34 @@ mpc8540ads_setup_arch(void)
|
|||
|
||||
/* setup the board related information for the enet controllers */
|
||||
pdata = (struct gianfar_platform_data *) ppc_sys_get_pdata(MPC85xx_TSEC1);
|
||||
pdata->board_flags = FSL_GIANFAR_BRD_HAS_PHY_INTR;
|
||||
pdata->interruptPHY = MPC85xx_IRQ_EXT5;
|
||||
pdata->phyid = 0;
|
||||
/* fixup phy address */
|
||||
pdata->phy_reg_addr += binfo->bi_immr_base;
|
||||
memcpy(pdata->mac_addr, binfo->bi_enetaddr, 6);
|
||||
if (pdata) {
|
||||
pdata->board_flags = FSL_GIANFAR_BRD_HAS_PHY_INTR;
|
||||
pdata->interruptPHY = MPC85xx_IRQ_EXT5;
|
||||
pdata->phyid = 0;
|
||||
/* fixup phy address */
|
||||
pdata->phy_reg_addr += binfo->bi_immr_base;
|
||||
memcpy(pdata->mac_addr, binfo->bi_enetaddr, 6);
|
||||
}
|
||||
|
||||
pdata = (struct gianfar_platform_data *) ppc_sys_get_pdata(MPC85xx_TSEC2);
|
||||
pdata->board_flags = FSL_GIANFAR_BRD_HAS_PHY_INTR;
|
||||
pdata->interruptPHY = MPC85xx_IRQ_EXT5;
|
||||
pdata->phyid = 1;
|
||||
/* fixup phy address */
|
||||
pdata->phy_reg_addr += binfo->bi_immr_base;
|
||||
memcpy(pdata->mac_addr, binfo->bi_enet1addr, 6);
|
||||
if (pdata) {
|
||||
pdata->board_flags = FSL_GIANFAR_BRD_HAS_PHY_INTR;
|
||||
pdata->interruptPHY = MPC85xx_IRQ_EXT5;
|
||||
pdata->phyid = 1;
|
||||
/* fixup phy address */
|
||||
pdata->phy_reg_addr += binfo->bi_immr_base;
|
||||
memcpy(pdata->mac_addr, binfo->bi_enet1addr, 6);
|
||||
}
|
||||
|
||||
pdata = (struct gianfar_platform_data *) ppc_sys_get_pdata(MPC85xx_FEC);
|
||||
pdata->board_flags = 0;
|
||||
pdata->interruptPHY = MPC85xx_IRQ_EXT5;
|
||||
pdata->phyid = 3;
|
||||
/* fixup phy address */
|
||||
pdata->phy_reg_addr += binfo->bi_immr_base;
|
||||
memcpy(pdata->mac_addr, binfo->bi_enet2addr, 6);
|
||||
if (pdata) {
|
||||
pdata = (struct gianfar_platform_data *) ppc_sys_get_pdata(MPC85xx_FEC);
|
||||
pdata->board_flags = 0;
|
||||
pdata->interruptPHY = MPC85xx_IRQ_EXT5;
|
||||
pdata->phyid = 3;
|
||||
/* fixup phy address */
|
||||
pdata->phy_reg_addr += binfo->bi_immr_base;
|
||||
memcpy(pdata->mac_addr, binfo->bi_enet2addr, 6);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_BLK_DEV_INITRD
|
||||
if (initrd_start)
|
||||
|
|
|
@ -90,20 +90,24 @@ mpc8560ads_setup_arch(void)
|
|||
|
||||
/* setup the board related information for the enet controllers */
|
||||
pdata = (struct gianfar_platform_data *) ppc_sys_get_pdata(MPC85xx_TSEC1);
|
||||
pdata->board_flags = FSL_GIANFAR_BRD_HAS_PHY_INTR;
|
||||
pdata->interruptPHY = MPC85xx_IRQ_EXT5;
|
||||
pdata->phyid = 0;
|
||||
/* fixup phy address */
|
||||
pdata->phy_reg_addr += binfo->bi_immr_base;
|
||||
memcpy(pdata->mac_addr, binfo->bi_enetaddr, 6);
|
||||
if (pdata) {
|
||||
pdata->board_flags = FSL_GIANFAR_BRD_HAS_PHY_INTR;
|
||||
pdata->interruptPHY = MPC85xx_IRQ_EXT5;
|
||||
pdata->phyid = 0;
|
||||
/* fixup phy address */
|
||||
pdata->phy_reg_addr += binfo->bi_immr_base;
|
||||
memcpy(pdata->mac_addr, binfo->bi_enetaddr, 6);
|
||||
}
|
||||
|
||||
pdata = (struct gianfar_platform_data *) ppc_sys_get_pdata(MPC85xx_TSEC2);
|
||||
pdata->board_flags = FSL_GIANFAR_BRD_HAS_PHY_INTR;
|
||||
pdata->interruptPHY = MPC85xx_IRQ_EXT5;
|
||||
pdata->phyid = 1;
|
||||
/* fixup phy address */
|
||||
pdata->phy_reg_addr += binfo->bi_immr_base;
|
||||
memcpy(pdata->mac_addr, binfo->bi_enet1addr, 6);
|
||||
if (pdata) {
|
||||
pdata->board_flags = FSL_GIANFAR_BRD_HAS_PHY_INTR;
|
||||
pdata->interruptPHY = MPC85xx_IRQ_EXT5;
|
||||
pdata->phyid = 1;
|
||||
/* fixup phy address */
|
||||
pdata->phy_reg_addr += binfo->bi_immr_base;
|
||||
memcpy(pdata->mac_addr, binfo->bi_enet1addr, 6);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_BLK_DEV_INITRD
|
||||
if (initrd_start)
|
||||
|
|
|
@ -129,20 +129,24 @@ sbc8560_setup_arch(void)
|
|||
|
||||
/* setup the board related information for the enet controllers */
|
||||
pdata = (struct gianfar_platform_data *) ppc_sys_get_pdata(MPC85xx_TSEC1);
|
||||
pdata->board_flags = FSL_GIANFAR_BRD_HAS_PHY_INTR;
|
||||
pdata->interruptPHY = MPC85xx_IRQ_EXT6;
|
||||
pdata->phyid = 25;
|
||||
/* fixup phy address */
|
||||
pdata->phy_reg_addr += binfo->bi_immr_base;
|
||||
memcpy(pdata->mac_addr, binfo->bi_enetaddr, 6);
|
||||
if (pdata) {
|
||||
pdata->board_flags = FSL_GIANFAR_BRD_HAS_PHY_INTR;
|
||||
pdata->interruptPHY = MPC85xx_IRQ_EXT6;
|
||||
pdata->phyid = 25;
|
||||
/* fixup phy address */
|
||||
pdata->phy_reg_addr += binfo->bi_immr_base;
|
||||
memcpy(pdata->mac_addr, binfo->bi_enetaddr, 6);
|
||||
}
|
||||
|
||||
pdata = (struct gianfar_platform_data *) ppc_sys_get_pdata(MPC85xx_TSEC2);
|
||||
pdata->board_flags = FSL_GIANFAR_BRD_HAS_PHY_INTR;
|
||||
pdata->interruptPHY = MPC85xx_IRQ_EXT7;
|
||||
pdata->phyid = 26;
|
||||
/* fixup phy address */
|
||||
pdata->phy_reg_addr += binfo->bi_immr_base;
|
||||
memcpy(pdata->mac_addr, binfo->bi_enet1addr, 6);
|
||||
if (pdata) {
|
||||
pdata->board_flags = FSL_GIANFAR_BRD_HAS_PHY_INTR;
|
||||
pdata->interruptPHY = MPC85xx_IRQ_EXT7;
|
||||
pdata->phyid = 26;
|
||||
/* fixup phy address */
|
||||
pdata->phy_reg_addr += binfo->bi_immr_base;
|
||||
memcpy(pdata->mac_addr, binfo->bi_enet1addr, 6);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_BLK_DEV_INITRD
|
||||
if (initrd_start)
|
||||
|
|
|
@ -122,19 +122,23 @@ gp3_setup_arch(void)
|
|||
|
||||
/* setup the board related information for the enet controllers */
|
||||
pdata = (struct gianfar_platform_data *) ppc_sys_get_pdata(MPC85xx_TSEC1);
|
||||
/* pdata->board_flags = FSL_GIANFAR_BRD_HAS_PHY_INTR; */
|
||||
pdata->interruptPHY = MPC85xx_IRQ_EXT5;
|
||||
pdata->phyid = 2;
|
||||
pdata->phy_reg_addr += binfo->bi_immr_base;
|
||||
memcpy(pdata->mac_addr, binfo->bi_enetaddr, 6);
|
||||
if (pdata) {
|
||||
/* pdata->board_flags = FSL_GIANFAR_BRD_HAS_PHY_INTR; */
|
||||
pdata->interruptPHY = MPC85xx_IRQ_EXT5;
|
||||
pdata->phyid = 2;
|
||||
pdata->phy_reg_addr += binfo->bi_immr_base;
|
||||
memcpy(pdata->mac_addr, binfo->bi_enetaddr, 6);
|
||||
}
|
||||
|
||||
pdata = (struct gianfar_platform_data *) ppc_sys_get_pdata(MPC85xx_TSEC2);
|
||||
/* pdata->board_flags = FSL_GIANFAR_BRD_HAS_PHY_INTR; */
|
||||
pdata->interruptPHY = MPC85xx_IRQ_EXT5;
|
||||
pdata->phyid = 4;
|
||||
/* fixup phy address */
|
||||
pdata->phy_reg_addr += binfo->bi_immr_base;
|
||||
memcpy(pdata->mac_addr, binfo->bi_enet1addr, 6);
|
||||
if (pdata) {
|
||||
/* pdata->board_flags = FSL_GIANFAR_BRD_HAS_PHY_INTR; */
|
||||
pdata->interruptPHY = MPC85xx_IRQ_EXT5;
|
||||
pdata->phyid = 4;
|
||||
/* fixup phy address */
|
||||
pdata->phy_reg_addr += binfo->bi_immr_base;
|
||||
memcpy(pdata->mac_addr, binfo->bi_enet1addr, 6);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_BLK_DEV_INITRD
|
||||
if (initrd_start)
|
||||
|
|
Loading…
Reference in New Issue