Commit 18a0483
net: mana: Fix accessing freed irq affinity_hint
After calling irq_set_affinity_and_hint(), the cpumask pointer is
saved in desc->affinity_hint, and will be used later when reading
/proc/irq/<num>/affinity_hint. So the cpumask variable needs to be
persistent. Otherwise, we are accessing freed memory when reading
the affinity_hint file.
Also, need to clear affinity_hint before free_irq(), otherwise there
is a one-time warning and stack trace during module unloading:
[ 243.948687] WARNING: CPU: 10 PID: 1589 at kernel/irq/manage.c:1913 free_irq+0x318/0x360
...
[ 243.948753] Call Trace:
[ 243.948754] <TASK>
[ 243.948760] mana_gd_remove_irqs+0x78/0xc0 [mana]
[ 243.948767] mana_gd_remove+0x3e/0x80 [mana]
[ 243.948773] pci_device_remove+0x3d/0xb0
[ 243.948778] device_remove+0x46/0x70
[ 243.948782] device_release_driver_internal+0x1fe/0x280
[ 243.948785] driver_detach+0x4e/0xa0
[ 243.948787] bus_remove_driver+0x70/0xf0
[ 243.948789] driver_unregister+0x35/0x60
[ 243.948792] pci_unregister_driver+0x44/0x90
[ 243.948794] mana_driver_exit+0x14/0x3fe [mana]
[ 243.948800] __do_sys_delete_module.constprop.0+0x185/0x2f0
To fix the bug, use the persistent mask, cpumask_of(cpu#), and set
affinity_hint to NULL before freeing the IRQ, as required by free_irq().
Cc: stable@vger.kernel.org
Fixes: 71fa688 ("net: mana: Assign interrupts to CPUs based on NUMA nodes")
Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
Reviewed-by: Michael Kelley <mikelley@microsoft.com>
Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
Link: https://lore.kernel.org/r/1675718929-19565-1-git-send-email-haiyangz@microsoft.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>1 parent b1f4fba commit 18a0483
1 file changed
+11
-26
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1217 | 1217 | | |
1218 | 1218 | | |
1219 | 1219 | | |
1220 | | - | |
1221 | | - | |
1222 | | - | |
| 1220 | + | |
1223 | 1221 | | |
1224 | 1222 | | |
1225 | 1223 | | |
| |||
1240 | 1238 | | |
1241 | 1239 | | |
1242 | 1240 | | |
1243 | | - | |
1244 | | - | |
1245 | | - | |
1246 | | - | |
1247 | | - | |
1248 | | - | |
1249 | | - | |
1250 | | - | |
1251 | | - | |
1252 | | - | |
1253 | | - | |
1254 | | - | |
1255 | | - | |
1256 | 1241 | | |
1257 | | - | |
1258 | 1242 | | |
1259 | 1243 | | |
1260 | 1244 | | |
| |||
1269 | 1253 | | |
1270 | 1254 | | |
1271 | 1255 | | |
1272 | | - | |
| 1256 | + | |
1273 | 1257 | | |
1274 | 1258 | | |
1275 | 1259 | | |
1276 | 1260 | | |
1277 | | - | |
1278 | | - | |
1279 | | - | |
| 1261 | + | |
| 1262 | + | |
| 1263 | + | |
| 1264 | + | |
1280 | 1265 | | |
1281 | | - | |
1282 | | - | |
1283 | 1266 | | |
1284 | 1267 | | |
1285 | 1268 | | |
| |||
1290 | 1273 | | |
1291 | 1274 | | |
1292 | 1275 | | |
1293 | | - | |
1294 | | - | |
1295 | | - | |
1296 | 1276 | | |
1297 | 1277 | | |
1298 | 1278 | | |
1299 | 1279 | | |
| 1280 | + | |
| 1281 | + | |
1300 | 1282 | | |
1301 | 1283 | | |
1302 | 1284 | | |
| |||
1324 | 1306 | | |
1325 | 1307 | | |
1326 | 1308 | | |
| 1309 | + | |
| 1310 | + | |
| 1311 | + | |
1327 | 1312 | | |
1328 | 1313 | | |
1329 | 1314 | | |
| |||
0 commit comments