hwmon fixes for 3.4-rc6

Fix OOPS seen in coretemp driver if the CPU core ID is too large
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.10 (GNU/Linux)
 
 iQIcBAABAgAGBQJPorqvAAoJEMsfJm/On5mBPaMP/i/JH099QD0REncHrT79q6FY
 /AvLIc8+apnU4qVfdT1IXqFU8xwJ8zAbttjELae68uf7XV2F92YhmFrd5ExZe85L
 tokRONm6ThKDNzjLC5CFEgYVnch32DInNP5IgrxWNEJABLtHl3zGtTCmyOy7b3Gi
 xzYwPI62OEVCpDpusMlfWJvk05telzL+OlNAofd7WIMH7qSQo73GiF6x6NC8aVSB
 x58bQLSAU0dVDk0y66csCAd0JtYSszDxU2uvaDzTTNcsQDs9YyFIkIeBWFLESfpD
 NnhSOysRnlKcuH+VDlQLGWOMUxlzCzezqULWI9bjALB8XZ+kzGtx+NLMN+IB/7bL
 pkSxy88dMQjys2ymL3Pv16Pe+s6wuOuSsUsrWiZ2h3JjhCgqucMt4rdhIzAXlvm1
 hKkbpPfMcALbLD2cHLsZWDAdFVmlystlt4Rc+zBGlK7nucs7mMsPnaDU4fsw2hGM
 lc7Y+neZtk/2YPAhqqcikqjgY0FAf80ndo2IBpZnVmPPdvwNOE75/+yZWwOPw1/C
 hb4G//g0/Pg509a3gbBl10AiNX/VrnbJJrkpgbAlGqMU+ZQi0dveRK2FZX2KXRw3
 pEt+cQfDB809vR421lcw7IQpgQnzUQsox7BW3IKt2LeUX4Ie9ZnmnE1b8eIpazQl
 t9lOL/iKy02BmMPtccO7
 =iNOt
 -----END PGP SIGNATURE-----

Merge tag 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging

Pull hwmon fixes from Guenter Roeck:
 "Fix OOPS seen in coretemp driver if the CPU core ID is too large"

* tag 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging:
  hwmon: (coretemp) Increase CPU core limit
  hwmon: (coretemp) fix oops on cpu unplug
This commit is contained in:
Linus Torvalds 2012-05-03 17:08:58 -07:00
commit 913a904169
1 changed files with 5 additions and 1 deletions

View File

@ -52,7 +52,7 @@ module_param_named(tjmax, force_tjmax, int, 0444);
MODULE_PARM_DESC(tjmax, "TjMax value in degrees Celsius");
#define BASE_SYSFS_ATTR_NO 2 /* Sysfs Base attr no for coretemp */
#define NUM_REAL_CORES 16 /* Number of Real cores per cpu */
#define NUM_REAL_CORES 32 /* Number of Real cores per cpu */
#define CORETEMP_NAME_LENGTH 17 /* String Length of attrs */
#define MAX_CORE_ATTRS 4 /* Maximum no of basic attrs */
#define TOTAL_ATTRS (MAX_CORE_ATTRS + 1)
@ -709,6 +709,10 @@ static void __cpuinit put_core_offline(unsigned int cpu)
indx = TO_ATTR_NO(cpu);
/* The core id is too big, just return */
if (indx > MAX_CORE_DATA - 1)
return;
if (pdata->core_data[indx] && pdata->core_data[indx]->cpu == cpu)
coretemp_remove_core(pdata, &pdev->dev, indx);