* Alex Beregszaszi <[EMAIL PROTECTED]> [070907 12:54]:
> Hi,
> 
> On Wed, 2007-09-05 at 04:29 +0200, Stefan Reinauer wrote:
> > * Alex Beregszaszi <[EMAIL PROTECTED]> [070904 13:17]:
> > > Hi,
> > > 
> > > the attached patch adds code to checksum the pci extension rom and stop
> > > if the stored and calculated checksum differ.
> > 
> > Is this checksum reliably correct? I am hesitating to add new
> > restrictions that might break otherwise working cards.
> 
> You are right, attached is a correct method. There is no fixed checksum
> byte, instead the whole should sum to zero.

> --
> Alex
> 

> Signed-off-by: Alex Beregszaszi <[EMAIL PROTECTED]>
 
Acked-by: Stefan Reinauer <[EMAIL PROTECTED]>


> Index: device/pci_rom.c
> ===================================================================
> --- device/pci_rom.c  (revision 494)
> +++ device/pci_rom.c  (working copy)
> @@ -33,6 +33,8 @@
>       unsigned long rom_address;
>       struct rom_header *rom_header;
>       struct pci_data *rom_data;
> +     unsigned int i;
> +     unsigned char sum = 0, *rom_bytes;
>  
>       if (dev->on_mainboard) {
>               /* In case some device PCI_ROM_ADDRESS can not be set
> @@ -67,7 +69,17 @@
>                      le32_to_cpu(rom_header->signature));
>               return NULL;
>       }
> +     
> +     /* checksum */
> +     rom_bytes = (unsigned char *)rom_address;
> +     for (i = 0; i < rom_header->size * 512; i++)
> +         sum += *(rom_bytes + i);
>  
> +     if (sum != 0) {
> +             printk(BIOS_ERR, "Incorrent Expansion ROM checksum (%02x != 
> 0)\n", sum);
> +             return NULL;
> +     }
> +
>       rom_data = (struct pci_data *)((unsigned char *)rom_header +
>                                      le32_to_cpu(rom_header->data));
>  


-- 
coresystems GmbH • Brahmsstr. 16 • D-79104 Freiburg i. Br.
      Tel.: +49 761 7668825 • Fax: +49 761 7664613
Email: [EMAIL PROTECTED]  • http://www.coresystems.de/
Registergericht: Amtsgericht Freiburg • HRB 7656
Geschäftsführer: Stefan Reinauer • Ust-IdNr.: DE245674866

-- 
linuxbios mailing list
linuxbios@linuxbios.org
http://www.linuxbios.org/mailman/listinfo/linuxbios

Reply via email to