Подробности

[В начало]

Проблема в реализации № 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

Ссылки

Problems found by KEDR

Принято

Kernel Bug Tracker, bug #32722

Статус

Исправлено в ядре 3.0

[В начало]