Bug 569595 - posix_fadvise() handles its arguments incorrectly in 32-bit compat mode. [rhel-5.2.z]
Summary: posix_fadvise() handles its arguments incorrectly in 32-bit compat mode. [rhe...
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Enterprise Linux 5
Classification: Red Hat
Component: kernel
Version: 5.6
Hardware: All
OS: Linux
high
high
Target Milestone: rc
: ---
Assignee: Jiri Pirko
QA Contact: Red Hat Kernel QE team
URL:
Whiteboard:
Depends On: 559410
Blocks:
TreeView+ depends on / blocked
 
Reported: 2010-03-01 19:52 UTC by RHEL Program Management
Modified: 2015-05-05 01:19 UTC (History)
10 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2010-03-17 03:18:59 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHSA-2010:0148 0 normal SHIPPED_LIVE Important: kernel security and bug fix update 2010-03-17 03:18:17 UTC

Description RHEL Program Management 2010-03-01 19:52:26 UTC
This bug has been copied from bug #559410 and has been proposed
to be backported to 5.2 z-stream (EUS).

Comment 3 Jiri Pirko 2010-03-02 14:14:01 UTC
in 2.6.18-92.1.37.el5

Comment 7 Chris Lalancette 2010-03-05 13:39:57 UTC
Please note that you'll need the followup patch for the Xen kernel as well.  That was just posted, and should be integrated into the 5.5 kernel soon.

Chris Lalancette

Comment 8 yanfu,wang 2010-03-09 06:21:44 UTC
reproduce on kernel 2.6.18-92.1.35.el5xen:
# uname -a
Linux dell-pe1950-01.rhts.eng.bos.redhat.com 2.6.18-92.1.35.el5xen #1 SMP Thu Jan 14 13:24:37 EST 2010 x86_64 x86_64 x86_64 GNU/Linux

# strace ./fadvise_test32 
execve("./fadvise_test32", ["./fadvise_test32"], [/* 23 vars */]) = 0
[ Process PID=6158 runs in 32 bit mode. ]
brk(0)                                  = 0x808b000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=81009, ...}) = 0
mmap2(NULL, 81009, PROT_READ, MAP_PRIVATE, 3, 0) = 0xfffffffff7fb2000
close(3)                                = 0
open("/lib/libc.so.6", O_RDONLY)        = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0000o\267\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1602128, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xfffffffff7fb1000
mmap2(0xb61000, 1320356, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb61000
mmap2(0xc9e000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x13d) = 0xc9e000
mmap2(0xca1000, 9636, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xca1000
close(3)                                = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xfffffffff7fb0000
set_thread_area(0xffdc5404)             = 0
mprotect(0xc9e000, 8192, PROT_READ)     = 0
mprotect(0xb5d000, 4096, PROT_READ)     = 0
munmap(0xf7fb2000, 81009)               = 0
open("/bin/cat", O_RDONLY)              = 3
fadvise64(3, 0, 0, 0x8 /* POSIX_FADV_??? */) = -1 EINVAL (Invalid argument)
fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xfffffffff7fc5000
write(1, "ret: 22, fd: 3, offset: 0,len: 8"..., 44ret: 22, fd: 3, offset: 0,len: 8, advise: 0
) = 44
fadvise64(3, 0, 0, 0x8 /* POSIX_FADV_??? */) = -1 EINVAL (Invalid argument)
write(1, "ret: 22, fd: 3, offset: 0,len: 8"..., 44ret: 22, fd: 3, offset: 0,len: 8, advise: 1
) = 44
fadvise64(3, 0, 0, 0x8 /* POSIX_FADV_??? */) = -1 EINVAL (Invalid argument)
write(1, "ret: 22, fd: 3, offset: 0,len: 8"..., 44ret: 22, fd: 3, offset: 0,len: 8, advise: 2
) = 44
fadvise64(3, 0, 0, 0x8 /* POSIX_FADV_??? */) = -1 EINVAL (Invalid argument)
write(1, "ret: 22, fd: 3, offset: 0,len: 8"..., 44ret: 22, fd: 3, offset: 0,len: 8, advise: 3
) = 44
fadvise64(3, 0, 0, 0x8 /* POSIX_FADV_??? */) = -1 EINVAL (Invalid argument)
write(1, "ret: 22, fd: 3, offset: 0,len: 8"..., 44ret: 22, fd: 3, offset: 0,len: 8, advise: 4
) = 44
fadvise64(3, 0, 0, 0x8 /* POSIX_FADV_??? */) = -1 EINVAL (Invalid argument)
write(1, "ret: 22, fd: 3, offset: 0,len: 8"..., 44ret: 22, fd: 3, offset: 0,len: 8, advise: 5
) = 44
close(3)                                = 0
exit_group(0)                           = ?


verify on kernel 2.6.18-92.1.38.el5xen:
# uname -a
Linux dell-pe1950-01.rhts.eng.bos.redhat.com 2.6.18-92.1.38.el5xen #1 SMP Mon Mar 8 12:09:26 EST 2010 x86_64 x86_64 x86_64 GNU/Linux

# strace ./fadvise_test32 
execve("./fadvise_test32", ["./fadvise_test32"], [/* 23 vars */]) = 0
[ Process PID=6265 runs in 32 bit mode. ]
brk(0)                                  = 0x91f2000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=81009, ...}) = 0
mmap2(NULL, 81009, PROT_READ, MAP_PRIVATE, 3, 0) = 0xfffffffff7fd7000
close(3)                                = 0
open("/lib/libc.so.6", O_RDONLY)        = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0000o\267\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1602128, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xfffffffff7fd6000
mmap2(0xb61000, 1320356, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb61000
mmap2(0xc9e000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x13d) = 0xc9e000
mmap2(0xca1000, 9636, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xca1000
close(3)                                = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xfffffffff7fd5000
set_thread_area(0xffce8d24)             = 0
mprotect(0xc9e000, 8192, PROT_READ)     = 0
mprotect(0xb5d000, 4096, PROT_READ)     = 0
munmap(0xf7fd7000, 81009)               = 0
open("/bin/cat", O_RDONLY)              = 3
fadvise64(3, 0, 0, 0x8 /* POSIX_FADV_??? */) = 0
fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xfffffffff7fea000
write(1, "ret: 0, fd: 3, offset: 0,len: 8,"..., 43ret: 0, fd: 3, offset: 0,len: 8, advise: 0
) = 43
fadvise64(3, 0, 0, 0x8 /* POSIX_FADV_??? */) = 0
write(1, "ret: 0, fd: 3, offset: 0,len: 8,"..., 43ret: 0, fd: 3, offset: 0,len: 8, advise: 1
) = 43
fadvise64(3, 0, 0, 0x8 /* POSIX_FADV_??? */) = 0
write(1, "ret: 0, fd: 3, offset: 0,len: 8,"..., 43ret: 0, fd: 3, offset: 0,len: 8, advise: 2
) = 43
fadvise64(3, 0, 0, 0x8 /* POSIX_FADV_??? */) = 0
write(1, "ret: 0, fd: 3, offset: 0,len: 8,"..., 43ret: 0, fd: 3, offset: 0,len: 8, advise: 3
) = 43
fadvise64(3, 0, 0, 0x8 /* POSIX_FADV_??? */) = 0
write(1, "ret: 0, fd: 3, offset: 0,len: 8,"..., 43ret: 0, fd: 3, offset: 0,len: 8, advise: 4
) = 43
fadvise64(3, 0, 0, 0x8 /* POSIX_FADV_??? */) = 0
write(1, "ret: 0, fd: 3, offset: 0,len: 8,"..., 43ret: 0, fd: 3, offset: 0,len: 8, advise: 5
) = 43
close(3)                                = 0
exit_group(0)                           = ?

Comment 10 Jiri Pirko 2010-03-09 14:58:48 UTC
additional patch in 2.6.18-92.1.38.el5

Comment 12 errata-xmlrpc 2010-03-17 03:18:59 UTC
An advisory has been issued which should help the problem
described in this bug report. This report is therefore being
closed with a resolution of ERRATA. For more information
on therefore solution and/or where to find the updated files,
please follow the link below. You may reopen this bug report
if the solution does not work for you.

http://rhn.redhat.com/errata/RHSA-2010-0148.html


Note You need to log in before you can comment on or make changes to this bug.