Skip to content

Commit

Permalink
[PATCH] IPMI: fix for handling bad ACPI data
Browse files Browse the repository at this point in the history
If the ACPI register bit width is zero (an invalid value) assume it is the
default spacing.  This avoids some coredumps on invalid data and makes some
systems work that have broken ACPI data.

Signed-off-by: Corey Minyard <minyard@acm.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
  • Loading branch information
Corey Minyard authored and Linus Torvalds committed May 1, 2005
1 parent 9206880 commit 35bc37a
Showing 1 changed file with 11 additions and 2 deletions.
13 changes: 11 additions & 2 deletions drivers/char/ipmi/ipmi_si_intf.c
Original file line number Diff line number Diff line change
Expand Up @@ -1526,8 +1526,17 @@ static int try_init_acpi(int intf_num, struct smi_info **new_info)
info->irq_setup = NULL;
}

regspacings[intf_num] = spmi->addr.register_bit_width / 8;
info->io.regspacing = spmi->addr.register_bit_width / 8;
if (spmi->addr.register_bit_width) {
/* A (hopefully) properly formed register bit width. */
regspacings[intf_num] = spmi->addr.register_bit_width / 8;
info->io.regspacing = spmi->addr.register_bit_width / 8;
} else {
/* Some broken systems get this wrong and set the value
* to zero. Assume it is the default spacing. If that
* is wrong, too bad, the vendor should fix the tables. */
regspacings[intf_num] = DEFAULT_REGSPACING;
info->io.regspacing = DEFAULT_REGSPACING;
}
regsizes[intf_num] = regspacings[intf_num];
info->io.regsize = regsizes[intf_num];
regshifts[intf_num] = spmi->addr.register_bit_offset;
Expand Down

0 comments on commit 35bc37a

Please sign in to comment.