On Tue, 19 Feb 2008, James Bottomley wrote:


On Tue, 2008-02-19 at 15:34 -0800, [EMAIL PROTECTED] wrote:
Subject: mpt fusion: don't oops if NumPhys==0
From: Krzysztof Oledzki <[EMAIL PROTECTED]>

Don't oops if NumPhys==0, instead return -ENODEV.
This patch fixes http://bugzilla.kernel.org/show_bug.cgi?id=9909

Signed-off-by: Krzysztof Piotr Oledzki <[EMAIL PROTECTED]>
Cc: FUJITA Tomonori <[EMAIL PROTECTED]>
Cc: James Bottomley <[EMAIL PROTECTED]>
Cc: Eric Moore <[EMAIL PROTECTED]>
Cc: Sathya Prakash <[EMAIL PROTECTED]>
Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
---

 drivers/message/fusion/mptsas.c |    5 +++++
 1 file changed, 5 insertions(+)

diff -puN drivers/message/fusion/mptsas.c~mpt-fusion-dont-oops-if-numphys==0 
drivers/message/fusion/mptsas.c
--- a/drivers/message/fusion/mptsas.c~mpt-fusion-dont-oops-if-numphys==0
+++ a/drivers/message/fusion/mptsas.c
@@ -1701,6 +1701,11 @@ mptsas_sas_expander_pg0(MPT_ADAPTER *ioc
        if (error)
                goto out_free_consistent;

+       if (!buffer->NumPhys) {
+               error = -ENODEV;
+               goto out_free_consistent;
+       }
+
        /* save config data */
        port_info->num_phys = buffer->NumPhys;
        port_info->phy_info = kcalloc(port_info->num_phys,
_

This is a bit odd ... It looks like a work around for a fusion firmware
problem.

Workaround or not, the driver should not oops by allocating 0 size memory block and dereferencing it. It used to work in <2.6.23 but not now.

What's the topology this thing is connected to?

It is a Dell-1950III server with two 400GB SAS disks (RAID1) installed in a dwo disk SAS backplane.

Best regrds,

                        Krzysztof Olędzki

Reply via email to