|
@@ -66,8 +66,10 @@ static struct vm_struct *get_io_area(unsigned long size)
|
|
|
for (p = &iolist; (tmp = *p) ; p = &tmp->next) {
|
|
for (p = &iolist; (tmp = *p) ; p = &tmp->next) {
|
|
|
if (size + addr < (unsigned long)tmp->addr)
|
|
if (size + addr < (unsigned long)tmp->addr)
|
|
|
break;
|
|
break;
|
|
|
- if (addr > KMAP_END-size)
|
|
|
|
|
|
|
+ if (addr > KMAP_END-size) {
|
|
|
|
|
+ kfree(area);
|
|
|
return NULL;
|
|
return NULL;
|
|
|
|
|
+ }
|
|
|
addr = tmp->size + (unsigned long)tmp->addr;
|
|
addr = tmp->size + (unsigned long)tmp->addr;
|
|
|
}
|
|
}
|
|
|
area->addr = (void *)addr;
|
|
area->addr = (void *)addr;
|