From: Cedric Le Goater Date: Mon, 2 Oct 2006 09:17:28 +0000 (-0700) Subject: [PATCH] s390: update fs3270 to use a struct pid X-Git-Tag: 2.1b_release~31329 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=782237a2418e2561a87c86a4832726931adce737;p=platform%2Fkernel%2Fkernel-mfld-blackbay.git [PATCH] s390: update fs3270 to use a struct pid Replaces the pid_t value with a struct pid to avoid pid wrap around problems. Signed-off-by: Cedric Le Goater Cc: Martin Schwidefsky Acked-by: Eric W. Biederman Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- diff --git a/drivers/s390/char/fs3270.c b/drivers/s390/char/fs3270.c index b4557fa..78f8bda 100644 --- a/drivers/s390/char/fs3270.c +++ b/drivers/s390/char/fs3270.c @@ -27,7 +27,7 @@ struct raw3270_fn fs3270_fn; struct fs3270 { struct raw3270_view view; - pid_t fs_pid; /* Pid of controlling program. */ + struct pid *fs_pid; /* Pid of controlling program. */ int read_command; /* ccw command to use for reads. */ int write_command; /* ccw command to use for writes. */ int attention; /* Got attention. */ @@ -102,7 +102,7 @@ fs3270_restore_callback(struct raw3270_request *rq, void *data) fp = (struct fs3270 *) rq->view; if (rq->rc != 0 || rq->rescnt != 0) { if (fp->fs_pid) - kill_proc(fp->fs_pid, SIGHUP, 1); + kill_pid(fp->fs_pid, SIGHUP, 1); } fp->rdbuf_size = 0; raw3270_request_reset(rq); @@ -173,7 +173,7 @@ fs3270_save_callback(struct raw3270_request *rq, void *data) */ if (rq->rc != 0 || rq->rescnt == 0) { if (fp->fs_pid) - kill_proc(fp->fs_pid, SIGHUP, 1); + kill_pid(fp->fs_pid, SIGHUP, 1); fp->rdbuf_size = 0; } else fp->rdbuf_size = fp->rdbuf->size - rq->rescnt; @@ -442,7 +442,7 @@ fs3270_open(struct inode *inode, struct file *filp) return PTR_ERR(fp); init_waitqueue_head(&fp->wait); - fp->fs_pid = current->pid; + fp->fs_pid = get_pid(task_pid(current)); rc = raw3270_add_view(&fp->view, &fs3270_fn, minor); if (rc) { fs3270_free_view(&fp->view); @@ -480,7 +480,8 @@ fs3270_close(struct inode *inode, struct file *filp) fp = filp->private_data; filp->private_data = NULL; if (fp) { - fp->fs_pid = 0; + put_pid(fp->fs_pid); + fp->fs_pid = NULL; raw3270_reset(&fp->view); raw3270_put_view(&fp->view); raw3270_del_view(&fp->view);