drivers/misc/pch_phub.c: don't oops if dmi_get_system_info returns NULL
PATCH 1/1 drivers/misc/pch_phub.c: don't oops if dmi_get_system_info returns NULL
Bruce,
Please apply to yocto/base. Fixes a boot issue for a tunnel creek development board.
--
commit 2b934c6236983392d01bef22e43af3051cac16f5
If dmi_get_system_info() returns NULL, pch_phub_probe() will dereferencea a zero pointer.
This oops was observed on an Atom based board which has no BIOS, but a bootloder which doesn't privde DMI data.
--- drivers/misc/pch_phub.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-)
drivers/misc/pch_phub.c +4 -1
@@ -686,6 +686,8 @@ static int __devinit pch_phub_probe(struct pci_dev *pdev, }if (id->driver_data ==1 ) {/* EG20T PCH */ +const char *board_name; + retval =sysfs_create_file (&pdev->dev.kobj, &dev_attr_pch_mac.attr);if (retval)
@@ -701,7 +703,8 @@ static int __devinit pch_phub_probe(struct pci_dev *pdev, CLKCFG_CANCLK_MASK);/* quirk for CM-iTC board */ -if (strstr (dmi_get_system_info (DMI_BOARD_NAME ),"CM-iTC" )) + board_name =dmi_get_system_info (DMI_BOARD_NAME ); +if (board_name &&strstr (board_name,"CM-iTC" )) pch_phub_read_modify_write_reg(chip, (unsigned int)CLKCFG_REG_OFFSET, CLKCFG_UART_48MHZ | CLKCFG_BAUDDIV |
Signature · 5 lines
1.7.1 -- Darren Hart Intel Open Source Technology Center Yocto Project - Linux Kernel
Quoted 4 lines · Darren Hart
Bruce,
Please apply to yocto/base. Fixes a boot issue for a tunnel creek development board.
I fetched and updated master in linux-yocto-3.0 and cherry picked this into yocto/base, and merged it out.
e6625fa..55f9c40 master -> master
935b896..c33fc74 yocto/base -> yocto/base 67283c12..30a2cec yocto/standard/arm-versatile-926ejs ->
yocto/standard/arm-versatile-926ejs
dee149a..318b059 yocto/standard/base -> yocto/standard/base 850784c..f79313d yocto/standard/beagleboard ->
yocto/standard/beagleboard
b584e72..c30a568 yocto/standard/common-pc-64/base ->
yocto/standard/common-pc-64/base
8064012..61da1e3 yocto/standard/common-pc-64/jasperforest ->
yocto/standard/common-pc-64/jasperforest
69faf26..ac5c59d yocto/standard/common-pc-64/romley ->
yocto/standard/common-pc-64/romley
1da9aad..c49c587 yocto/standard/common-pc-64/sugarbay ->
yocto/standard/common-pc-64/sugarbay
287479a..9e321ee yocto/standard/common-pc/atom-pc ->
yocto/standard/common-pc/atom-pc
f56a137..efaab1f yocto/standard/common-pc/base ->
yocto/standard/common-pc/base
34a9e0e..9a259cf yocto/standard/crownbay -> yocto/standard/crownbay 311152b..8c09403 yocto/standard/emenlow -> yocto/standard/emenlow 813ec5a..e556c2a yocto/standard/fishriver -> yocto/standard/fishriver 2d19d3f..5e08aa8 yocto/standard/fri2 -> yocto/standard/fri2 1562ec0..a8eef04 yocto/standard/fsl-mpc8315e-rdb ->
yocto/standard/fsl-mpc8315e-rdb
ac0f36e..f9b9688 yocto/standard/mti-malta32-be ->
yocto/standard/mti-malta32-be
7d24c08..bb024ac yocto/standard/mti-malta32-le ->
yocto/standard/mti-malta32-le
40381c3..6c76d97 yocto/standard/preempt-rt/base ->
yocto/standard/preempt-rt/base
40381c3..5ae5cb6 yocto/standard/preempt-rt/common-pc ->
yocto/standard/preempt-rt/common-pc
38525f1..a46a4c3 yocto/standard/qemu-ppc32 -> yocto/standard/qemu-ppc32 5eaea5c..df9213c yocto/standard/routerstationpro ->
yocto/standard/routerstationpro
You'll need to use kernel-dev or update your SRCREVs manually to pick it up. I've got a pending update that I'll send out later. But we'd have to wait for it to merge into poky master anyway.
Cheers,
Bruce
Quoted 43 lines
--
commit
2b934c6236983392d01bef22e43af3051cac16f5If
dmi_get_system_info()returns NULL,pch_phub_probe()will dereferencea a zero pointer.This oops was observed on an Atom based board which has no BIOS, but a bootloder which doesn't privde DMI data.
Signed-off-by Alexander Stein<[email protected]>Cc Tomoya MORINAGA<[email protected]>Cc Greg KH<[email protected]>Signed-off-by Andrew Morton<[email protected]>Signed-off-by Linus Torvalds<[email protected]>--- drivers/misc/pch_phub.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-)drivers/misc/pch_phub.c +4
-1@@ -686,6 +686,8 @@ static int __devinit pch_phub_probe(struct pci_dev *pdev, }if (id->driver_data ==1 ) {/* EG20T PCH */ +const char *board_name; + retval =sysfs_create_file (&pdev->dev.kobj, &dev_attr_pch_mac.attr);if (retval)@@ -701,7 +703,8 @@ static int __devinit pch_phub_probe(struct pci_dev *pdev, CLKCFG_CANCLK_MASK);/* quirk for CM-iTC board */ -if (strstr (dmi_get_system_info (DMI_BOARD_NAME ),"CM-iTC" )) + board_name =dmi_get_system_info (DMI_BOARD_NAME ); +if (board_name&&strstr (board_name,"CM-iTC" )) pch_phub_read_modify_write_reg(chip, (unsigned int)CLKCFG_REG_OFFSET, CLKCFG_UART_48MHZ | CLKCFG_BAUDDIV |
Quoted 38 lines · Darren Hart
Bruce,
Please apply to yocto/base. Fixes a boot issue for a tunnel creek development board.
--
commit
2b934c6236983392d01bef22e43af3051cac16f5If
dmi_get_system_info()returns NULL,pch_phub_probe()will dereferencea a zero pointer.This oops was observed on an Atom based board which has no BIOS, but a bootloder which doesn't privde DMI data.
Signed-off-by Alexander Stein <[email protected]>Cc Tomoya MORINAGA <[email protected]>Cc Greg KH <[email protected]>Signed-off-by Andrew Morton <[email protected]>Signed-off-by Linus Torvalds <[email protected]>--- drivers/misc/pch_phub.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-)drivers/misc/pch_phub.c +2
-0@@ -686,6 +686,8 @@ static int __devinit pch_phub_probe(struct pci_dev *pdev, }if (id->driver_data ==1 ) {/* EG20T PCH */ +const char *board_name; + retval =sysfs_create_file (&pdev->dev.kobj, &dev_attr_pch_mac.attr);if (retval)
drivers/misc/pch_phub.c static int __devinit pch_phub_probe(struct pci_dev · line 707
Quoted 6 lines
drivers/misc/pch_phub.c +2
-1@@ -701,7 +703,8 @@ static int __devinit pch_phub_probe(struct pci_dev *pdev, CLKCFG_CANCLK_MASK);/* quirk for CM-iTC board */ -if (strstr (dmi_get_system_info (DMI_BOARD_NAME ),"CM-iTC" )) + board_name =dmi_get_system_info (DMI_BOARD_NAME ); +if (board_name &&strstr (board_name,"CM-iTC" ))
May be it could be just if ( dmi_get_system_info(DMI_BOARD_NAME) && strstr(board_name, "CM-iTC"))
although I think compiler will already do it internally
Quoted 3 lines
drivers/misc/pch_phub.c +0
-0pch_phub_read_modify_write_reg(chip, (unsigned int)CLKCFG_REG_OFFSET, CLKCFG_UART_48MHZ | CLKCFG_BAUDDIV |
Signature · 1 line
Khem Raj
Quoted 49 lines · Khem Raj
Quoted 38 lines · Darren Hart
Bruce,
Please apply to yocto/base. Fixes a boot issue for a tunnel creek development board.
--
commit
2b934c6236983392d01bef22e43af3051cac16f5If
dmi_get_system_info()returns NULL,pch_phub_probe()will dereferencea a zero pointer.This oops was observed on an Atom based board which has no BIOS, but a bootloder which doesn't privde DMI data.
Signed-off-by Alexander Stein<[email protected]>Cc Tomoya MORINAGA<[email protected]>Cc Greg KH<[email protected]>Signed-off-by Andrew Morton<[email protected]>Signed-off-by Linus Torvalds<[email protected]>--- drivers/misc/pch_phub.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-)drivers/misc/pch_phub.c +2
-0@@ -686,6 +686,8 @@ static int __devinit pch_phub_probe(struct pci_dev *pdev, }if (id->driver_data ==1 ) {/* EG20T PCH */ +const char *board_name; + retval =sysfs_create_file (&pdev->dev.kobj, &dev_attr_pch_mac.attr);if (retval)drivers/misc/pch_phub.c static int __devinit pch_phub_probe(struct pci_dev · line 707
Quoted 6 lines
drivers/misc/pch_phub.c +2
-1@@ -701,7 +703,8 @@ static int __devinit pch_phub_probe(struct pci_dev *pdev, CLKCFG_CANCLK_MASK);/* quirk for CM-iTC board */ -if (strstr (dmi_get_system_info (DMI_BOARD_NAME ),"CM-iTC" )) + board_name =dmi_get_system_info (DMI_BOARD_NAME ); +if (board_name&&strstr (board_name,"CM-iTC" ))May be it could be just if ( dmi_get_system_info(DMI_BOARD_NAME)&&
strstr(board_name, "CM-iTC"))
Quoted 1 line
although I think compiler will already do it internally
Could very well be. I grabbed this one directly from linus' tree, so I've got it as-is for now, but I've tagged it to be considered later if we do decide that we want to send a tweak of this upstream
Thanks!
Bruce
Quoted 4 lines
Quoted 4 lines
drivers/misc/pch_phub.c +0
-0pch_phub_read_modify_write_reg(chip, (unsigned int)CLKCFG_REG_OFFSET, CLKCFG_UART_48MHZ | CLKCFG_BAUDDIV |
Quoted 41 lines · Khem Raj
Quoted 40 lines · Darren Hart
Bruce,
Please apply to yocto/base. Fixes a boot issue for a tunnel creek development board.
--
commit
2b934c6236983392d01bef22e43af3051cac16f5If
dmi_get_system_info()returns NULL,pch_phub_probe()will dereferencea a zero pointer.This oops was observed on an Atom based board which has no BIOS, but a bootloder which doesn't privde DMI data.
Signed-off-by Alexander Stein <[email protected]>Cc Tomoya MORINAGA <[email protected]>Cc Greg KH <[email protected]>Signed-off-by Andrew Morton <[email protected]>Signed-off-by Linus Torvalds <[email protected]>--- drivers/misc/pch_phub.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-)drivers/misc/pch_phub.c +2
-0@@ -686,6 +686,8 @@ static int __devinit pch_phub_probe(struct pci_dev *pdev, }if (id->driver_data ==1 ) {/* EG20T PCH */ +const char *board_name; + retval =sysfs_create_file (&pdev->dev.kobj, &dev_attr_pch_mac.attr);if (retval)@@ -701,7 +703,8 @@ static int __devinit pch_phub_probe(struct pci_dev *pdev, CLKCFG_CANCLK_MASK);
Quoted 7 lines
drivers/misc/pch_phub.c static int __devinit pch_phub_probe(struct pci_dev *pdev, · line 707
Quoted 4 lines
drivers/misc/pch_phub.c +2
-1/* quirk for CM-iTC board */ -if (strstr (dmi_get_system_info (DMI_BOARD_NAME ),"CM-iTC" )) + board_name =dmi_get_system_info (DMI_BOARD_NAME ); +if (board_name &&strstr (board_name,"CM-iTC" ))May be it could be just if (
dmi_get_system_info(DMI_BOARD_NAME)&&strstr(board_name, "CM-iTC"))
Where does board_name get initialized in your version?
Signature · 3 lines
Darren Hart Intel Open Source Technology Center Yocto Project - Linux Kernel