2.4.19-pre9: fs/locks.c
Subsystems (2)
PATCH 1/1 2.4.19-pre9: fs/locks.c
The following patch addresses problem associated with
process locks when called from cloned process created with CLONE_THREAD flag. The fcntl locks are per-process and creates a dead-lock for cloned (w/CLONE_THREAD) processes. It should use tgid instead pid (same way as getpid()).
Thanks,
Saurabh Desai ([email protected])
=======================================
fs/locks.c +5 -5
@@ -225,7 +225,7 @@ fl->fl_owner =NULL ; fl->fl_file = filp; - fl->fl_pid = current->pid; + fl->fl_pid = current->tgid; fl->fl_flags =FL_FLOCK ; fl->fl_type = type; fl->fl_start =0 ;
@@ -284,7 +284,7 @@ fl->fl_end =OFFSET_MAX ; fl->fl_owner = current->files; - fl->fl_pid = current->pid; + fl->fl_pid = current->tgid; fl->fl_file = filp; fl->fl_flags =FL_POSIX ; fl->fl_notify =NULL ;
@@ -324,7 +324,7 @@ fl->fl_end =OFFSET_MAX ; fl->fl_owner = current->files; - fl->fl_pid = current->pid; + fl->fl_pid = current->tgid; fl->fl_file = filp; fl->fl_flags =FL_POSIX ; fl->fl_notify =NULL ;
@@ -353,7 +353,7 @@return -ENOMEM ; fl->fl_owner = current->files; - fl->fl_pid = current->pid; + fl->fl_pid = current->tgid; fl->fl_file = filp; fl->fl_flags =FL_LEASE ;
@@ -719,7 +719,7 @@return -ENOMEM ; new_fl->fl_owner = current->files; - new_fl->fl_pid = current->pid; + new_fl->fl_pid = current->tgid; new_fl->fl_file = filp; new_fl->fl_flags =FL_POSIX |FL_ACCESS ; new_fl->fl_type = (read_write ==FLOCK_VERIFY_WRITE ) ?F_WRLCK :F_RDLCK ;