2006-11-08 19:55:19

by Nathan Lynch

[permalink] [raw]
Subject: [PATCH] nvidiafb: fix unreachable code in nv10GetConfig

Fix binary/logical operator typo which leads to unreachable code.
Noticed while looking at other issues; I don't have the relevant
hardware to test this.


Signed-off-by: Nathan Lynch <[email protected]>

--- linux-2.6-powerpc.git.orig/drivers/video/nvidia/nv_setup.c
+++ linux-2.6-powerpc.git/drivers/video/nvidia/nv_setup.c
@@ -262,7 +262,7 @@ static void nv10GetConfig(struct nvidia_
#endif

dev = pci_find_slot(0, 1);
- if ((par->Chipset && 0xffff) == 0x01a0) {
+ if ((par->Chipset & 0xffff) == 0x01a0) {
int amt = 0;

pci_read_config_dword(dev, 0x7c, &amt);


2006-11-08 20:14:14

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH] nvidiafb: fix unreachable code in nv10GetConfig

On Wed, 8 Nov 2006 13:55:11 -0600
Nathan Lynch <[email protected]> wrote:

> Fix binary/logical operator typo which leads to unreachable code.
> Noticed while looking at other issues; I don't have the relevant
> hardware to test this.
>
>
> Signed-off-by: Nathan Lynch <[email protected]>
>
> --- linux-2.6-powerpc.git.orig/drivers/video/nvidia/nv_setup.c
> +++ linux-2.6-powerpc.git/drivers/video/nvidia/nv_setup.c
> @@ -262,7 +262,7 @@ static void nv10GetConfig(struct nvidia_
> #endif
>
> dev = pci_find_slot(0, 1);
> - if ((par->Chipset && 0xffff) == 0x01a0) {
> + if ((par->Chipset & 0xffff) == 0x01a0) {
> int amt = 0;
>
> pci_read_config_dword(dev, 0x7c, &amt);

That looks like a pretty significant bug. It'll cause the kernel to
potentially map the wrong amount of memory for all cards except the
NV_ARCH_04 type. Has been there for over a year though. hmm..

2006-11-08 22:04:29

by Nathan Lynch

[permalink] [raw]
Subject: Re: [PATCH] nvidiafb: fix unreachable code in nv10GetConfig

Andrew Morton wrote:
> On Wed, 8 Nov 2006 13:55:11 -0600
> Nathan Lynch <[email protected]> wrote:
>
> > Fix binary/logical operator typo which leads to unreachable code.
> > Noticed while looking at other issues; I don't have the relevant
> > hardware to test this.
> >
> >
> > Signed-off-by: Nathan Lynch <[email protected]>
> >
> > --- linux-2.6-powerpc.git.orig/drivers/video/nvidia/nv_setup.c
> > +++ linux-2.6-powerpc.git/drivers/video/nvidia/nv_setup.c
> > @@ -262,7 +262,7 @@ static void nv10GetConfig(struct nvidia_
> > #endif
> >
> > dev = pci_find_slot(0, 1);
> > - if ((par->Chipset && 0xffff) == 0x01a0) {
> > + if ((par->Chipset & 0xffff) == 0x01a0) {
> > int amt = 0;
> >
> > pci_read_config_dword(dev, 0x7c, &amt);
>
> That looks like a pretty significant bug. It'll cause the kernel to
> potentially map the wrong amount of memory for all cards except the
> NV_ARCH_04 type. Has been there for over a year though. hmm..

Did some searching, and assuming that chipset == PCI device id
(dubious?), I think the bug would affect only some integrated GeForce2
cards, which are somewhat old.

It looks to me like the other devices handled by nv10GetConfig would
still be handled as intended, but I'm not familiar with this code.

2006-11-12 22:20:58

by James Simmons

[permalink] [raw]
Subject: Re: [PATCH] nvidiafb: fix unreachable code in nv10GetConfig


> Andrew Morton wrote:
>> On Wed, 8 Nov 2006 13:55:11 -0600
>> Nathan Lynch <[email protected]> wrote:
>>
>>> Fix binary/logical operator typo which leads to unreachable code.
>>> Noticed while looking at other issues; I don't have the relevant
>>> hardware to test this.
>>>
>>>
>>> Signed-off-by: Nathan Lynch <[email protected]>
>>>
>>> --- linux-2.6-powerpc.git.orig/drivers/video/nvidia/nv_setup.c
>>> +++ linux-2.6-powerpc.git/drivers/video/nvidia/nv_setup.c
>>> @@ -262,7 +262,7 @@ static void nv10GetConfig(struct nvidia_
>>> #endif
>>>
>>> dev = pci_find_slot(0, 1);
>>> - if ((par->Chipset && 0xffff) == 0x01a0) {
>>> + if ((par->Chipset & 0xffff) == 0x01a0) {
>>> int amt = 0;
>>>
>>> pci_read_config_dword(dev, 0x7c, &amt);
>>
>> That looks like a pretty significant bug. It'll cause the kernel to
>> potentially map the wrong amount of memory for all cards except the
>> NV_ARCH_04 type. Has been there for over a year though. hmm..
>
> Did some searching, and assuming that chipset == PCI device id
> (dubious?), I think the bug would affect only some integrated GeForce2
> cards, which are somewhat old.
>
> It looks to me like the other devices handled by nv10GetConfig would
> still be handled as intended, but I'm not familiar with this code.
>

Your assumption is correct :-)