From 35b99c57f4d50bcfb91126ab2e7520ea29aae6f0 Mon Sep 17 00:00:00 2001 From: Andreas Jaeger Date: Mon, 30 Oct 2000 06:47:34 +0000 Subject: In the case of F_TEST, set l_type to F_RDLCK explicitly. --- sysdeps/generic/lockf64.c | 1 + sysdeps/unix/sysv/linux/i386/lockf64.c | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/sysdeps/generic/lockf64.c b/sysdeps/generic/lockf64.c index 3d27964879..0caae6ae44 100644 --- a/sysdeps/generic/lockf64.c +++ b/sysdeps/generic/lockf64.c @@ -49,6 +49,7 @@ lockf64 (int fd, int cmd, off64_t len64) case F_TEST: /* Test the lock: return 0 if FD is unlocked or locked by this process; return -1, set errno to EACCES, if another process holds the lock. */ + fl.l_type = F_RDLCK; if (__fcntl (fd, F_GETLK, &fl) < 0) return -1; if (fl.l_type == F_UNLCK || fl.l_pid == __getpid ()) diff --git a/sysdeps/unix/sysv/linux/i386/lockf64.c b/sysdeps/unix/sysv/linux/i386/lockf64.c index f4603cfee2..774cca2ca5 100644 --- a/sysdeps/unix/sysv/linux/i386/lockf64.c +++ b/sysdeps/unix/sysv/linux/i386/lockf64.c @@ -85,6 +85,7 @@ lockf64 (int fd, int cmd, off64_t len64) /* Test the lock: return 0 if FD is unlocked or locked by this process; return -1, set errno to EACCES, if another process holds the lock. */ #if __ASSUME_FCNTL64 > 0 + fl64.l_type = F_RDLCK; if (INLINE_SYSCALL (fcntl64, 3, fd, F_GETLK64, &fl64) < 0) return -1; if (fl64.l_type == F_UNLCK || fl64.l_pid == __getpid ()) @@ -95,8 +96,10 @@ lockf64 (int fd, int cmd, off64_t len64) # ifdef __NR_fcntl64 if (!__have_no_fcntl64) { - int res = INLINE_SYSCALL (fcntl64, 3, fd, F_GETLK64, &fl64); + int res; + fl64.l_type = F_RDLCK; + res = INLINE_SYSCALL (fcntl64, 3, fd, F_GETLK64, &fl64); /* If errno == ENOSYS try the 32bit interface if len64 can be represented with 32 bits. */ @@ -120,6 +123,7 @@ lockf64 (int fd, int cmd, off64_t len64) } } # endif + fl.l_type = F_RDLCK; if (__fcntl (fd, F_GETLK, &fl) < 0) return -1; if (fl.l_type == F_UNLCK || fl.l_pid == __getpid ()) -- cgit 1.4.1