- don't unlock files if pid still exists (#128104)
This commit is contained in:
parent
22e00761a1
commit
303c5bf015
49
lockdev-1.0.1-pidexists.patch
Normal file
49
lockdev-1.0.1-pidexists.patch
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
diff -Nru lockdev-1.0.1.orig/src/lockdev.c lockdev-1.0.1/src/lockdev.c
|
||||||
|
--- lockdev-1.0.1.orig/src/lockdev.c 2004-07-17 19:17:48.000000000 +0300
|
||||||
|
+++ lockdev-1.0.1/src/lockdev.c 2004-07-17 19:19:07.000000000 +0300
|
||||||
|
@@ -147,7 +147,7 @@
|
||||||
|
static inline int _dl_block_semaphore ( void);
|
||||||
|
static pid_t _dl_check_lock ( const char * lockname);
|
||||||
|
static char * _dl_check_devname ( const char * devname);
|
||||||
|
-
|
||||||
|
+static inline int _dl_pid_exists ( pid_t pid );
|
||||||
|
|
||||||
|
#define SEMAPHORE "LOCKDEV"
|
||||||
|
#define close_n_return( v) return( _dl_unlock_semaphore( v))
|
||||||
|
@@ -400,7 +400,7 @@
|
||||||
|
/* checks content's format */
|
||||||
|
if ( j == 1 ) {
|
||||||
|
/* checks process existence */
|
||||||
|
- if ( kill( pid_read, 0) == 0 ) {
|
||||||
|
+ if ( _dl_pid_exists( pid_read)) {
|
||||||
|
_debug( 2, "_dl_check_lock() locked by %d\n", (int)pid_read);
|
||||||
|
return pid_read;
|
||||||
|
}
|
||||||
|
@@ -449,7 +449,7 @@
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
fscanf( fd, "%d", &pid2);
|
||||||
|
- if ( pid2 && (pid2 != pid_read) && ( kill( pid2, 0) == 0 )) {
|
||||||
|
+ if ( pid2 && (pid2 != pid_read) && ( _dl_pid_exists( pid2))) {
|
||||||
|
/* lock file was changed! let us quickly
|
||||||
|
* put it back again
|
||||||
|
*/
|
||||||
|
@@ -501,6 +501,18 @@
|
||||||
|
return strcpy(m, p);
|
||||||
|
}
|
||||||
|
|
||||||
|
+/* for internal use */
|
||||||
|
+/* correctly check if a process with a given pid exists */
|
||||||
|
+static inline int
|
||||||
|
+_dl_pid_exists( pid)
|
||||||
|
+ pid_t pid;
|
||||||
|
+{
|
||||||
|
+ if ( !kill( pid, 0))
|
||||||
|
+ return 1;
|
||||||
|
+ if ( errno == ESRCH)
|
||||||
|
+ return 0;
|
||||||
|
+ return 1;
|
||||||
|
+}
|
||||||
|
|
||||||
|
/* exported by the interface file lockdev.h */
|
||||||
|
/* ZERO means that the device wasn't locked, but could have been locked later */
|
@ -1,7 +1,7 @@
|
|||||||
Summary: A library for locking devices.
|
Summary: A library for locking devices.
|
||||||
Name: lockdev
|
Name: lockdev
|
||||||
Version: 1.0.1
|
Version: 1.0.1
|
||||||
Release: 3
|
Release: 4
|
||||||
License: LGPL
|
License: LGPL
|
||||||
Group: System Environment/Libraries
|
Group: System Environment/Libraries
|
||||||
Source: http://ftp.debian.org/debian/pool/main/l/lockdev/%{name}_%{version}.orig.tar.gz
|
Source: http://ftp.debian.org/debian/pool/main/l/lockdev/%{name}_%{version}.orig.tar.gz
|
||||||
@ -10,6 +10,7 @@ Patch1: lockdev-1.0.0-shared.patch
|
|||||||
Patch2: lockdev-1.0.0-signal.patch
|
Patch2: lockdev-1.0.0-signal.patch
|
||||||
Patch3: lockdev-1.0.0-cli.patch
|
Patch3: lockdev-1.0.0-cli.patch
|
||||||
Patch4: lockdev-1.0.1-checkname.patch
|
Patch4: lockdev-1.0.1-checkname.patch
|
||||||
|
Patch5: lockdev-1.0.1-pidexists.patch
|
||||||
Prereq: shadow-utils, filesystem >= 2.1.4-1
|
Prereq: shadow-utils, filesystem >= 2.1.4-1
|
||||||
BuildRoot: %{_tmppath}/%{name}-root
|
BuildRoot: %{_tmppath}/%{name}-root
|
||||||
|
|
||||||
@ -34,6 +35,7 @@ package contains the development headers and a static library.
|
|||||||
%patch2 -p1 -b .signal
|
%patch2 -p1 -b .signal
|
||||||
%patch3 -p1 -b .jbj
|
%patch3 -p1 -b .jbj
|
||||||
%patch4 -p1 -b .checkname
|
%patch4 -p1 -b .checkname
|
||||||
|
%patch5 -p1 -b .pidexists
|
||||||
|
|
||||||
%build
|
%build
|
||||||
make "CFLAGS=${RPM_OPT_FLAGS} -fPIC"
|
make "CFLAGS=${RPM_OPT_FLAGS} -fPIC"
|
||||||
@ -73,6 +75,9 @@ rm -fr $RPM_BUILD_ROOT
|
|||||||
%{_includedir}/*
|
%{_includedir}/*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Oct 22 2004 Adrian Havill <havill@redhat.com> 1.0.1-4
|
||||||
|
- don't unlock files if pid still exists (#128104)
|
||||||
|
|
||||||
* Tue Jun 15 2004 Elliot Lee <sopwith@redhat.com>
|
* Tue Jun 15 2004 Elliot Lee <sopwith@redhat.com>
|
||||||
- rebuilt
|
- rebuilt
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user