lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <m364fbrhow.fsf@defiant.localdomain>
Date:	Mon, 25 Sep 2006 19:15:27 +0200
From:	Krzysztof Halasa <khc@...waw.pl>
To:	Jeff Garzik <jgarzik@...ox.com>
Cc:	Tejun Heo <htejun@...il.com>, linux-kernel@...r.kernel.org
Subject: Re: NV SATA breakage: jgarzik/libata-dev#upstream etc

Ok, rebooted it.

After that commit (fea63e38013ec628ab3f7fddc4c2148064b7910a), it does:

ata1: SATA max UDMA/133 cmd 0xC800 ctl 0xC482 bmdma 0xC000 irq 225

GPF: 0 [1]
RIP: ata_device_add+0x19a/0x530
RAX: 48000002d0b38d48
R14: ffff81003f7cc7e0

Call trace:
nv_init_one+0x190/0x1f0
pci_match_device
pci_device_probe
driver_probe_device
__driver_attach
__driver_attach
bus_for_each_dev
driver_register
__pci_register_driver
nv_init
etc.

ata_device_add:
...
 193:   49 8b 46 08             mov    0x8(%r14),%rax <<<< ap->ops = invalid
 197:   4c 89 f7                mov    %r14,%rdi      <<<< ap
 19a:   ff 90 f8 00 00 00       callq  *0xf8(%rax)    <<<< ap->ops->port_start
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
And it GPFs here (ap->ops->port_start(ap)).

Actually it seems the ap->ops = RAX is invalid but not exactly a NULL ptr.

Now, sata_nv.c: nv_init_one():
	struct ata_port_info *ppi;
	ppi = &nv_port_info[ent->driver_data];
	probe_ent = ata_pci_init_native_mode(pdev, &ppi,
        	ATA_PORT_PRIMARY | ATA_ PORT_SECONDARY);

while
/**
 *      ata_pci_init_native_mode - Initialize native-mode driver
 *      @pdev:  pci device to be initialized
 *      @port:  array[2] of pointers to port info structures.
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Not sure... should the nv_init_one() just read:
	struct ata_port_info *ppi[2];
	ppi[0] = ppi[1] = &nv_port_info[ent->driver_data];
	probe_ent = ata_pci_init_native_mode(pdev, ppi,
        	ATA_PORT_PRIMARY | ATA_ PORT_SECONDARY);

or should
	ppi[1] = NULL?
-- 
Krzysztof Halasa
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ