Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 44490
b: refs/heads/master
c: 3cec556
h: refs/heads/master
v: v3
  • Loading branch information
Eric W. Biederman authored and Linus Torvalds committed Dec 13, 2006
1 parent cbc6586 commit 2e85440
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 22 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: b3f13debd593dbd7242a4ecf6c9b4d529805e5a0
refs/heads/master: 3cec556a84be02bcd8755422eec61f1b9bee4e2f
37 changes: 17 additions & 20 deletions trunk/drivers/char/n_r3964.c
Original file line number Diff line number Diff line change
Expand Up @@ -125,8 +125,8 @@ static void transmit_block(struct r3964_info *pInfo);
static void receive_char(struct r3964_info *pInfo, const unsigned char c);
static void receive_error(struct r3964_info *pInfo, const char flag);
static void on_timeout(unsigned long priv);
static int enable_signals(struct r3964_info *pInfo, pid_t pid, int arg);
static int read_telegram(struct r3964_info *pInfo, pid_t pid, unsigned char __user *buf);
static int enable_signals(struct r3964_info *pInfo, struct pid *pid, int arg);
static int read_telegram(struct r3964_info *pInfo, struct pid *pid, unsigned char __user *buf);
static void add_msg(struct r3964_client_info *pClient, int msg_id, int arg,
int error_code, struct r3964_block_header *pBlock);
static struct r3964_message* remove_msg(struct r3964_info *pInfo,
Expand Down Expand Up @@ -829,7 +829,7 @@ static void on_timeout(unsigned long priv)
}

static struct r3964_client_info *findClient(
struct r3964_info *pInfo, pid_t pid)
struct r3964_info *pInfo, struct pid *pid)
{
struct r3964_client_info *pClient;

Expand All @@ -843,7 +843,7 @@ static struct r3964_client_info *findClient(
return NULL;
}

static int enable_signals(struct r3964_info *pInfo, pid_t pid, int arg)
static int enable_signals(struct r3964_info *pInfo, struct pid *pid, int arg)
{
struct r3964_client_info *pClient;
struct r3964_client_info **ppClient;
Expand All @@ -858,7 +858,7 @@ static int enable_signals(struct r3964_info *pInfo, pid_t pid, int arg)

if(pClient->pid == pid)
{
TRACE_PS("removing client %d from client list", pid);
TRACE_PS("removing client %d from client list", pid_nr(pid));
*ppClient = pClient->next;
while(pClient->msg_count)
{
Expand All @@ -869,6 +869,7 @@ static int enable_signals(struct r3964_info *pInfo, pid_t pid, int arg)
TRACE_M("enable_signals - msg kfree %p",pMsg);
}
}
put_pid(pClient->pid);
kfree(pClient);
TRACE_M("enable_signals - kfree %p",pClient);
return 0;
Expand All @@ -892,10 +893,10 @@ static int enable_signals(struct r3964_info *pInfo, pid_t pid, int arg)
if(pClient==NULL)
return -ENOMEM;

TRACE_PS("add client %d to client list", pid);
TRACE_PS("add client %d to client list", pid_nr(pid));
spin_lock_init(&pClient->lock);
pClient->sig_flags=arg;
pClient->pid = pid;
pClient->pid = get_pid(pid);
pClient->next=pInfo->firstClient;
pClient->first_msg = NULL;
pClient->last_msg = NULL;
Expand All @@ -908,7 +909,7 @@ static int enable_signals(struct r3964_info *pInfo, pid_t pid, int arg)
return 0;
}

static int read_telegram(struct r3964_info *pInfo, pid_t pid, unsigned char __user *buf)
static int read_telegram(struct r3964_info *pInfo, struct pid *pid, unsigned char __user *buf)
{
struct r3964_client_info *pClient;
struct r3964_block_header *block;
Expand Down Expand Up @@ -1005,7 +1006,7 @@ static void add_msg(struct r3964_client_info *pClient, int msg_id, int arg,
/* Send SIGIO signal to client process: */
if(pClient->sig_flags & R3964_USE_SIGIO)
{
kill_proc(pClient->pid, SIGIO, 1);
kill_pid(pClient->pid, SIGIO, 1);
}
}

Expand Down Expand Up @@ -1042,7 +1043,7 @@ static void remove_client_block(struct r3964_info *pInfo,
{
struct r3964_block_header *block;

TRACE_PS("remove_client_block PID %d", pClient->pid);
TRACE_PS("remove_client_block PID %d", pid_nr(pClient->pid));

block=pClient->next_block_to_read;
if(block)
Expand Down Expand Up @@ -1157,6 +1158,7 @@ static void r3964_close(struct tty_struct *tty)
TRACE_M("r3964_close - msg kfree %p",pMsg);
}
}
put_pid(pClient->pid);
kfree(pClient);
TRACE_M("r3964_close - client kfree %p",pClient);
pClient=pNext;
Expand Down Expand Up @@ -1193,12 +1195,11 @@ static ssize_t r3964_read(struct tty_struct *tty, struct file *file,
struct r3964_client_message theMsg;
DECLARE_WAITQUEUE (wait, current);

int pid = current->pid;
int count;

TRACE_L("read()");

pClient=findClient(pInfo, pid);
pClient=findClient(pInfo, task_pid(current));
if(pClient)
{
pMsg = remove_msg(pInfo, pClient);
Expand Down Expand Up @@ -1252,7 +1253,6 @@ static ssize_t r3964_write(struct tty_struct * tty, struct file * file,
struct r3964_block_header *pHeader;
struct r3964_client_info *pClient;
unsigned char *new_data;
int pid;

TRACE_L("write request, %d characters", count);
/*
Expand Down Expand Up @@ -1295,9 +1295,7 @@ static ssize_t r3964_write(struct tty_struct * tty, struct file * file,
pHeader->locks = 0;
pHeader->owner = NULL;

pid=current->pid;

pClient=findClient(pInfo, pid);
pClient=findClient(pInfo, task_pid(current));
if(pClient)
{
pHeader->owner = pClient;
Expand Down Expand Up @@ -1328,7 +1326,7 @@ static int r3964_ioctl(struct tty_struct * tty, struct file * file,
switch(cmd)
{
case R3964_ENABLE_SIGNALS:
return enable_signals(pInfo, current->pid, arg);
return enable_signals(pInfo, task_pid(current), arg);
case R3964_SETPRIORITY:
if(arg<R3964_MASTER || arg>R3964_SLAVE)
return -EINVAL;
Expand All @@ -1341,7 +1339,7 @@ static int r3964_ioctl(struct tty_struct * tty, struct file * file,
pInfo->flags &= ~R3964_BCC;
return 0;
case R3964_READ_TELEGRAM:
return read_telegram(pInfo, current->pid, (unsigned char __user *)arg);
return read_telegram(pInfo, task_pid(current), (unsigned char __user *)arg);
default:
return -ENOIOCTLCMD;
}
Expand All @@ -1357,15 +1355,14 @@ static unsigned int r3964_poll(struct tty_struct * tty, struct file * file,
struct poll_table_struct *wait)
{
struct r3964_info *pInfo=(struct r3964_info*)tty->disc_data;
int pid=current->pid;
struct r3964_client_info *pClient;
struct r3964_message *pMsg=NULL;
unsigned long flags;
int result = POLLOUT;

TRACE_L("POLL");

pClient=findClient(pInfo,pid);
pClient=findClient(pInfo, task_pid(current));
if(pClient)
{
poll_wait(file, &pInfo->read_wait, wait);
Expand Down
2 changes: 1 addition & 1 deletion trunk/include/linux/n_r3964.h
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ struct r3964_message;

struct r3964_client_info {
spinlock_t lock;
pid_t pid;
struct pid *pid;
unsigned int sig_flags;

struct r3964_client_info *next;
Expand Down

0 comments on commit 2e85440

Please sign in to comment.