Подробности
[В начало]
Проблема в реализации № K0004
Краткое описание
(ath5k) Не всегда освобождается память, выделенная в ath5k_eeprom_convert_pcal_info_* с помощью kcalloc
Подробное описание
Проблема касается драйвера 'ath5k'.
В процессе работы ath5k_hw_init() вызывается ath5k_eeprom_init(), которая в итоге приводит к вызову одной из функций ath5k_eeprom_convert_pcal_info_[5111|5112|2413](). На системе, где выявилась проблема, это была ath5k_eeprom_convert_pcal_info_2413(), но всё, сказанное ниже, применимо и к остальным двум функциям.
(drivers/net/wireless/ath/ath5k/eeprom.c) ath5k_eeprom_convert_pcal_info_2413() выделяет несколько блоков памяти в циклах 'for' с помощью kcalloc (см. строки 1153, 1176, 1182). Если выделение какого-либо из этих блоков памяти завершится с ошибкой, блоки памяти, выделенные раньше в ath5k_eeprom_convert_pcal_info_2413(), не будут освобождены.
В текущем варианте кода данного модуля ядра единственное место, где освобождаются эти блоки памяти, - функция ath5k_eeprom_free_pcal_info(), но она в данном случае не вызывается.
Компонент
linux-kernel 2.6.39-rc1
Ссылки
Принято
Kernel Bug Tracker, bug #32722
Статус
Исправлено в ядре 3.0
[В начало]