Description of problem: fuse_direct_io() has a loop where requests are allocated in each iteration. if allocation fails, the loop is broken out and follows into an unconditional fuse_put_request() on that invalid pointer." Upstream commit: http://git.kernel.org/linus/f60311d5f7670d9539b424e4ed8b5c0872fc9e83 This can be triggered when the system is low on memory, and when the fuse_request_alloc() function called from fuse_get_req() fails. The fuse_put_request() function will then dereference the invalid pointer returned, resulting in a kernel oops. This was introduced in 413ef8cb (v2.6.14-rc1) and fixed in v2.6.32-rc7.
Mitre's CVE-2009-4021 entry: ---------------------------- The fuse_direct_io function in fs/fuse/file.c in the fuse subsystem in the Linux kernel before 2.6.32-rc7 might allow attackers to cause a denial of service (invalid pointer dereference and OOPS) via vectors possibly related to a memory-consumption attack.
This issue has been addressed in following products: Red Hat Enterprise Linux 5 Via RHSA-2010:0046 https://rhn.redhat.com/errata/RHSA-2010-0046.html
This issue has been addressed in following products: MRG for RHEL-5 Via RHSA-2010:0041 https://rhn.redhat.com/errata/RHSA-2010-0041.html