* alloc_page_buffers() - kernel panic?
@ 2005-09-28 9:50 lk
2005-09-28 10:32 ` Fawad Lateef
0 siblings, 1 reply; 2+ messages in thread
From: lk @ 2005-09-28 9:50 UTC (permalink / raw)
To: linux-kernel
I was looking at the fs(buffer.c) code, An observation:
alloc_page_buffers() is called from the function create_empty_buffers() . If
the memory allocation for the buffer head (through kmem_cache_alloc) fails
the allocation is retried till successful for async I/O. However for
synchronous I/O no such handling is done and create_buffer will return
NULL which is not checked in the calling function. The pointer returned by
NULL
is used without checking for the NULL condition. This would result in a
kernel panic when alloc_page_buffers() is not able to allocate buffer heads
from the cache for sync I/O.
Is anyone aware of the thought process behind this difference in
implementation for sync and async I/O.
regards
lk
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: alloc_page_buffers() - kernel panic?
2005-09-28 9:50 alloc_page_buffers() - kernel panic? lk
@ 2005-09-28 10:32 ` Fawad Lateef
0 siblings, 0 replies; 2+ messages in thread
From: Fawad Lateef @ 2005-09-28 10:32 UTC (permalink / raw)
To: lk; +Cc: linux-kernel
On 9/28/05, lk <linux_kernel@patni.com> wrote:
> I was looking at the fs(buffer.c) code, An observation:
>
> alloc_page_buffers() is called from the function create_empty_buffers() . If
> the memory allocation for the buffer head (through kmem_cache_alloc) fails
> the allocation is retried till successful for async I/O. However for
> synchronous I/O no such handling is done and create_buffer will return
> NULL which is not checked in the calling function. The pointer returned by
> NULL
> is used without checking for the NULL condition. This would result in a
> kernel panic when alloc_page_buffers() is not able to allocate buffer heads
> from the cache for sync I/O.
>
I think you overlooked alloc_page_buffers call from
create_empty_buffers .... It is called with third argument as 1 and it
is the retry argument in alloc_page_buffers function which checks
if(!retry) return NULL; so it will never return NULL if retry is 1
..........
> Is anyone aware of the thought process behind this difference in
> implementation for sync and async I/O.
>
what kind of difference ?? If its allocation of page buffers then
async IOs are not allowed to fail so it waits to allocate
memory/buffers for it ....
--
Fawad Lateef
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2005-09-28 10:32 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-09-28 9:50 alloc_page_buffers() - kernel panic? lk
2005-09-28 10:32 ` Fawad Lateef
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox