Skip to content

Commit

Permalink
video via: fix iomem access
Browse files Browse the repository at this point in the history
This driver is not respecting the iomem memory space restrictions
and does direct access. This works on x86 but is non-portable and
should not be done.  Converted memcpy() of 2 to readw.
Last post increment of romptr was unnecessary since pointer never
used after that.

Found by sparse, compile tested only.

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
  • Loading branch information
Stephen Hemminger authored and Florian Tobias Schandinat committed Mar 9, 2011
1 parent a625e30 commit b65d604
Showing 1 changed file with 7 additions and 8 deletions.
15 changes: 7 additions & 8 deletions drivers/video/via/lcd.c
Original file line number Diff line number Diff line change
Expand Up @@ -1064,34 +1064,33 @@ static struct display_timing lcd_centering_timging(struct display_timing

bool viafb_lcd_get_mobile_state(bool *mobile)
{
unsigned char *romptr, *tableptr;
unsigned char __iomem *romptr, *tableptr, *biosptr;
u8 core_base;
unsigned char *biosptr;
/* Rom address */
u32 romaddr = 0x000C0000;
u16 start_pattern = 0;
const u32 romaddr = 0x000C0000;
u16 start_pattern;

biosptr = ioremap(romaddr, 0x10000);
start_pattern = readw(biosptr);

memcpy(&start_pattern, biosptr, 2);
/* Compare pattern */
if (start_pattern == 0xAA55) {
/* Get the start of Table */
/* 0x1B means BIOS offset position */
romptr = biosptr + 0x1B;
tableptr = biosptr + *((u16 *) romptr);
tableptr = biosptr + readw(romptr);

/* Get the start of biosver structure */
/* 18 means BIOS version position. */
romptr = tableptr + 18;
romptr = biosptr + *((u16 *) romptr);
romptr = biosptr + readw(romptr);

/* The offset should be 44, but the
actual image is less three char. */
/* pRom += 44; */
romptr += 41;

core_base = *romptr++;
core_base = readb(romptr);

if (core_base & 0x8)
*mobile = false;
Expand Down

0 comments on commit b65d604

Please sign in to comment.