В ядре Linux устранена следующая уязвимость: pinctrl: mcp23s08: Отключите все прерывания штифта во время зонда Исследуемый чип может включа…
В ядре Linux устранена следующая уязвимость: pinctrl: mcp23s08: Отключите все прерывания штифта во время зонда Исследуемый чип может включать функцию прерывания на смене некоторые из его булавок, например, после перезагрузки. Это может привести к тому, что чип генерировать прерывания для штифтов, которые не имеют зарегистрированного вложенного обработчика, что приводит к крушению ядра, например, ниже: [ 7.928897] Неспособный обрабатывать ядро считываемой памяти по виртуальному адресу 000000000000000ac [ 7.932314] Информация об абортах: [ 7.935081] ESR = 000000000960000004 [ 7.938808] EC = 0x25: DABT (текущий EL), IL = 32 бита [ 7.944094] СЕТ = 0, FnV = 0 [ 7.947127] EA = 0, S1PTW = 0 [ 7.950247] FSC = 0x04: разлом перевода 0 уровня 0 [ 7.955101] Информация об аборте данных: [ 7.957961] ISV = 0, МКС = 0x00000004, МКС2 = 0000000000 [ 7.963421] CM = 0, WnR = 0, TnD = 0, TagAccess = 0 [ 7.968447] GCS = 0, наложение = 0, DirtyBit = 0, Xs = 0 [ 7.973734] пользователь pgtable: 4k страницы, 48-битные VA, pgdp=00000000089b7000 [ 7.980148] [000000000000000ac] pgd=000000000000000000000, p4d=000000000000000000 [ 7.986913] Внутренняя ошибка: Упс: 00000009600004 [#1] SMP [ 7.992545] Модули, связанные в: [ 8.073678] CPU: 0 UID: 0 PID: 81 Comm: irq/18-4-0025 Не испорченный 7.0.0-rc6-gd2b5a1f931c8-грязный #199 [ 8.073689] Аппаратное наименование: Khadas VIM3 (DT) [ 8.073692] pstate: 604000c5 (nZCv daIF +PAN -UAO -TCO -DIT -SSBS BTYPE=--) [ 8.094639] pc : _raw_spin_lock_irq+0x40/0x80 [ 8.098970] lr : ручка_недеде_irq+0x2c/0x168 [ 8.098979] sp : ffff800082b2bd20 [ 8.106599] x29: ffff800082bd20 x28: ffff800080107920 x27: ffff800800104d88 [ 8.106611] x26: ffff000000039880 x25: 00000000000001 x24: 000000000000ff00 [ 8.113707] x23: 00000000000001 x22: 00000000000000000 x21: 000000000000000e [ 8.120850] x20: 000000000000000 x19: 000000000000ac x18: 000000000000000 [ 8.135046] x17: 000000000000000 x16: 000000000000000 x15: 000000000000000 [ 8.135062] x14: ff800081567ea8 x13: ffffffffffffffx12: 000000000000 [ 8.135070] x11: 000000000000c0 x10: 000000000000b60 x9 : ffff800080109e00c [ 8.135078] x8 : 1fffe0000069dbc1 x7 : 00000000000001x01 x6 : ffff0000034ede00 [ 8.135086] x5 : 000000000000000 x4 : ffff0000034ede08 x3 : 00000000000001 [ 8.163460] x2 : 000000000000000 x1 : 00000000000001 x0 : 000000000000ac [ 8.170560] Отслеживания вызова: [ 8.180094] _raw_spin_lock_irq+0x40/0x80 (P) [ 8.184443] mcp23s08_irq+0x248/0x358 [ 8.184462] irq_thread_fn+0x34/0xb8 [ 8.184470] irq_thread+0x1a4/0x310 [ 8.195093] Хт-дост+0x13c/0x150 [ 8.198309] ret_from_fork+0x10/0x20 [ 8.201850] Код: d65f03c0 d2800002 52800023 f9800011 (885ffc01) [ 8.207931] -------Конец след 000000000000000000000 ]---- Этот вопрос всегда присутствовал, но был латентным до тех пор, пока не совершит "f9f4fda15e72" ("pinctrl: mcp23s08: init reg_defaults от HW на пробе и тип кэша переключателя"), который правильно удалил reg_defaults из regmap и как побочный эффект изменил поведение обработчик прерывания, так что реальная стоимость регистра MCP_GPINTEN теперь читается с чипа вместо использования фиктивного значения по умолчанию 0; ненулевое значение для этого Регистрация может вызвать призыв вложенного обработчика, который может не существовать (пока). Исправьте эту проблему, отключив все прерывания штифта во время инициализации.
| Продукт | Вендор | Статус |
|---|---|---|
| linux | Отслеживается | |
| linux | Отслеживается | |
| linux | Отслеживается | |
| linux | Отслеживается | |
| linux_kernel | * | Отслеживается |