From: Kenji Kaneshige Fix an invalid memory reference in the e1000 driver which would cause kernel panic. Signed-off-by: Kenji Kaneshige Cc: Jeb Cramer Cc: John Ronciak Cc: Ganesh Venkatesan Cc: Jeff Garzik Acked-by: Jeff Kirsher Signed-off-by: Andrew Morton --- drivers/net/e1000/e1000_param.c | 10 +++++++--- 1 files changed, 7 insertions(+), 3 deletions(-) diff -puN drivers/net/e1000/e1000_param.c~e1000-fix-invalid-memory-reference drivers/net/e1000/e1000_param.c --- devel/drivers/net/e1000/e1000_param.c~e1000-fix-invalid-memory-reference 2006-01-05 22:45:02.000000000 -0800 +++ devel-akpm/drivers/net/e1000/e1000_param.c 2006-01-05 22:45:02.000000000 -0800 @@ -545,7 +545,7 @@ e1000_check_fiber_options(struct e1000_a static void __devinit e1000_check_copper_options(struct e1000_adapter *adapter) { - int speed, dplx; + int speed, dplx, an; int bd = adapter->bd_number; { /* Speed */ @@ -641,8 +641,12 @@ e1000_check_copper_options(struct e1000_ .p = an_list }} }; - int an = AutoNeg[bd]; - e1000_validate_option(&an, &opt, adapter); + if (num_AutoNeg > bd) { + an = AutoNeg[bd]; + e1000_validate_option(&an, &opt, adapter); + } else { + an = opt.def; + } adapter->hw.autoneg_advertised = an; } _