Подробности

[В начало]

Проблема в реализации № L0022

Краткое описание

kernel/range.c: неправильная работа функции clean_sort_range() в случае полного массива

Подробное описание

Функция clean_sort_range() должна возвращать количество не пустых элементов массива. Однако, если массив полный, то функция clean_sort_range() возвращает ноль. Проблема заключается в том, что количество не пустых элементов вычисляется путем поиска первого пустого элемента. И, если таких элементов нет, то возвращается начальное значение переменной nr_range. Т.е. ноль.

Способы устранения

 kernel/range.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff -puN kernel/range.c~kernel-range-fix-clean_sort_range-for-the-case-of-full-array kernel/range.c
--- a/kernel/range.c~kernel-range-fix-clean_sort_range-for-the-case-of-full-array
+++ a/kernel/range.c
@@ -119,7 +119,7 @@ static int cmp_range(const void *x1, con
 
 int clean_sort_range(struct range *range, int az)
 {
-       int i, j, k = az - 1, nr_range = 0;
+       int i, j, k = az - 1, nr_range = az;
 
        for (i = 0; i < k; i++) {
                if (range[i].end)
_

Компонент

linux-kernel 2.6.32

Принято

https://lkml.org/lkml/2010/11/5/264
commit

Статус

Исправлено в kernel 2.6.37

[В начало]