From: bugzilla-daemon@bugzilla.kernel.org
To: linux-ide@vger.kernel.org
Subject: [Bug 49151] NULL pointer dereference in pata_acpi
Date: Fri, 16 Nov 2012 08:39:34 +0000 (UTC) [thread overview]
Message-ID: <20121116083934.B4F9711FEE3@bugzilla.kernel.org> (raw)
In-Reply-To: <bug-49151-11633@https.bugzilla.kernel.org/>
https://bugzilla.kernel.org/show_bug.cgi?id=49151
--- Comment #41 from Aaron Lu <aaron.lu@intel.com> 2012-11-16 08:39:33 ---
The problem I see is:
During init time, identify command needs to be sent;
pacpi_qc_issue is invoked, and if the chipset can not set timing independently
for each drive, and the qc is not for the current drive, dma mode will be set
for the target device if ata_dma_enabled returns true;
At this time, ata_device->dma_mode is still un-initialized as 0, but
ata_dma_enabled would treat this as valid, and the ata_timing table doesn't
handle mode 0, so we get NULL. This problem only occurs when processing
identify command.
So I think we should init ata_device->dma_mode to 0xff when we are to reset the
drive, and the real value will get set in ata_set_mode afterwards. This way,
when pacpi_qc_issue is invoked, it will not attempt to set dma mode for the
device.
And for Szymon's bisect, I think the 'offending' commit actually fixed a
problem of pata_acpi(maybe a long standing problem). And due to this fix,
pata_acpi module triggered this bug.
In previous kernels(pre the 'offending' commit Szymon bisected), the
acpi_port_start function will always fail due to ap->acpi_handle is NULL, the
reason is showed in the following call sequence:
ata_host_start
ap->ops->port_start -> pacpi_port_start -> where ap->acpi_handle is used
ata_host_register
ata_associate_acpi -> where the ap->acpi_handle is assigned
So in previous kernels, pata_acpi module will always fail to init the
controller, effectively hiding this bug.
Please someone test the following patch, as I do not have a system to reproduce
this:
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 3cc7096..e04cdc2 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -2560,6 +2560,7 @@ int ata_bus_probe(struct ata_port *ap)
* bus as we may be talking too fast.
*/
dev->pio_mode = XFER_PIO_0;
+ dev->dma_mode = 0xff;
/* If the controller has a pio mode setup function
* then use it to set the chipset to rights. Don't
diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c
index e60437c..bf039b0 100644
--- a/drivers/ata/libata-eh.c
+++ b/drivers/ata/libata-eh.c
@@ -2657,6 +2657,7 @@ int ata_eh_reset(struct ata_link *link, int classify,
* bus as we may be talking too fast.
*/
dev->pio_mode = XFER_PIO_0;
+ dev->dma_mode = 0xff;
/* If the controller has a pio mode setup function
* then use it to set the chipset to rights. Don't
--
Configure bugmail: https://bugzilla.kernel.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are watching the assignee of the bug.
next prev parent reply other threads:[~2012-11-16 8:39 UTC|newest]
Thread overview: 70+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-10-20 10:19 [Bug 49151] New: NULL pointer dereference in pata_acpi bugzilla-daemon
2012-10-20 10:31 ` [Bug 49151] " bugzilla-daemon
2012-10-20 10:33 ` bugzilla-daemon
2012-10-20 12:00 ` [Bug 49151] New: " Borislav Petkov
2012-10-21 16:04 ` Phillip Wood
2012-10-21 16:57 ` Borislav Petkov
2012-10-22 15:47 ` Phillip Wood
2012-10-22 20:27 ` Borislav Petkov
2012-10-23 10:05 ` Alan Cox
2012-10-23 10:17 ` Borislav Petkov
2012-10-23 16:12 ` Borislav Petkov
2012-10-24 6:43 ` Anton V. Boyarshinov
2012-10-24 9:28 ` Phillip Wood
2012-10-24 10:57 ` Alan Cox
2012-11-03 4:26 ` Borislav Petkov
2012-11-03 16:30 ` Alan Cox
2012-11-03 16:48 ` Alan Cox
2012-11-16 4:50 ` Jeff Garzik
2012-10-20 12:00 ` [Bug 49151] " bugzilla-daemon
2012-10-21 16:04 ` bugzilla-daemon
2012-10-21 16:58 ` bugzilla-daemon
2012-10-22 12:15 ` bugzilla-daemon
2012-10-22 12:21 ` bugzilla-daemon
2012-10-22 12:42 ` bugzilla-daemon
2012-10-22 15:48 ` bugzilla-daemon
2012-10-22 20:27 ` bugzilla-daemon
2012-10-22 20:40 ` bugzilla-daemon
2012-10-22 21:06 ` bugzilla-daemon
2012-10-23 10:01 ` bugzilla-daemon
2012-10-23 10:17 ` bugzilla-daemon
2012-10-23 11:02 ` bugzilla-daemon
2012-10-23 12:54 ` bugzilla-daemon
2012-10-23 16:12 ` bugzilla-daemon
2012-10-23 16:39 ` bugzilla-daemon
2012-10-23 20:11 ` bugzilla-daemon
2012-10-23 20:41 ` bugzilla-daemon
2012-10-23 20:52 ` bugzilla-daemon
2012-10-23 21:10 ` bugzilla-daemon
2012-10-24 6:43 ` bugzilla-daemon
2012-10-24 9:28 ` bugzilla-daemon
2012-10-24 10:52 ` bugzilla-daemon
2012-10-24 15:25 ` bugzilla-daemon
2012-10-25 14:31 ` bugzilla-daemon
2012-10-29 13:15 ` bugzilla-daemon
2012-10-29 13:36 ` bugzilla-daemon
2012-11-01 15:18 ` bugzilla-daemon
2012-11-02 12:07 ` bugzilla-daemon
2012-11-03 4:23 ` bugzilla-daemon
2012-11-03 4:26 ` bugzilla-daemon
2012-11-03 7:37 ` bugzilla-daemon
2012-11-03 16:25 ` bugzilla-daemon
2012-11-03 16:43 ` bugzilla-daemon
2012-11-15 18:05 ` bugzilla-daemon
2012-11-15 18:07 ` bugzilla-daemon
2012-11-16 4:50 ` bugzilla-daemon
2012-11-16 4:59 ` bugzilla-daemon
2012-11-16 8:39 ` bugzilla-daemon [this message]
2012-11-17 16:29 ` bugzilla-daemon
2012-11-17 17:22 ` bugzilla-daemon
2012-11-25 12:55 ` bugzilla-daemon
2012-11-29 2:22 ` bugzilla-daemon
2012-11-29 11:21 ` bugzilla-daemon
2012-11-30 17:10 ` bugzilla-daemon
2012-12-02 17:46 ` bugzilla-daemon
2012-12-03 0:51 ` bugzilla-daemon
2012-12-03 3:39 ` bugzilla-daemon
2012-12-07 7:00 ` bugzilla-daemon
2012-12-18 7:13 ` bugzilla-daemon
2012-12-18 7:26 ` bugzilla-daemon
2012-12-18 12:48 ` bugzilla-daemon
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20121116083934.B4F9711FEE3@bugzilla.kernel.org \
--to=bugzilla-daemon@bugzilla.kernel.org \
--cc=linux-ide@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).