2.5.19:fs/locks.c
Subsystems (2)
PATCH 1/1 2.5.19:fs/locks.c
The following patch addresses problem associated with process locks when called from the 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
@@ -226,7 +226,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 ;
@@ -285,7 +285,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 ;
@@ -325,7 +325,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 ;
@@ -354,7 +354,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 ;