patch-2.4.0-test3 linux/arch/ia64/ia32/sys_ia32.c
Next file: linux/arch/ia64/kernel/process.c
Previous file: linux/arch/ia64/config.in
Back to the patch index
Back to the overall index
- Lines: 203
- Date:
Sat Jul 8 19:26:11 2000
- Orig file:
v2.4.0-test2/linux/arch/ia64/ia32/sys_ia32.c
- Orig date:
Fri Jun 23 21:55:07 2000
diff -u --recursive --new-file v2.4.0-test2/linux/arch/ia64/ia32/sys_ia32.c linux/arch/ia64/ia32/sys_ia32.c
@@ -111,12 +111,10 @@
* `munmap' if the `execve' failes.
*/
down(¤t->mm->mmap_sem);
- lock_kernel();
av = (char **) do_mmap_pgoff(0, 0UL, len, PROT_READ | PROT_WRITE,
MAP_PRIVATE | MAP_ANONYMOUS, 0);
- unlock_kernel();
up(¤t->mm->mmap_sem);
if (IS_ERR(av))
@@ -258,11 +256,15 @@
return -EINVAL;
if (!file->f_op->read)
return -EINVAL;
+ lock_kernel();
if (file->f_op->llseek) {
- if (file->f_op->llseek(file,off,0) != off)
+ if (file->f_op->llseek(file,off,0) != off) {
+ unlock_kernel();
return -EINVAL;
+ }
} else
file->f_pos = off;
+ unlock_kernel();
r = file->f_op->read(file, (char *)addr, len, &file->f_pos);
return (r < 0) ? -EINVAL : addr;
}
@@ -292,7 +294,6 @@
if (copy_from_user(&a, arg, sizeof(a)))
return -EFAULT;
- lock_kernel();
if (!(a.flags & MAP_ANONYMOUS)) {
error = -EBADF;
file = fget(a.fd);
@@ -302,9 +303,7 @@
a.flags &= ~(MAP_EXECUTABLE | MAP_DENYWRITE);
if ((a.flags & MAP_FIXED) && ((a.addr & ~PAGE_MASK) || (a.offset & ~PAGE_MASK))) {
- unlock_kernel();
error = do_mmap_fake(file, a.addr, a.len, a.prot, a.flags, a.offset);
- lock_kernel();
} else {
down(¤t->mm->mmap_sem);
error = do_mmap(file, a.addr, a.len, a.prot, a.flags, a.offset);
@@ -313,7 +312,6 @@
if (file)
fput(file);
out:
- unlock_kernel();
return error;
}
@@ -323,14 +321,12 @@
int retval;
int fds[2];
- lock_kernel();
retval = do_pipe(fds);
if (retval)
goto out;
if (copy_to_user(fd, fds, sizeof(fds)))
retval = -EFAULT;
out:
- unlock_kernel();
return retval;
}
@@ -712,7 +708,6 @@
buf.count = count;
buf.error = 0;
- lock_kernel();
error = vfs_readdir(file, filldir32, &buf);
if (error < 0)
goto out_putf;
@@ -724,7 +719,6 @@
}
out_putf:
- unlock_kernel();
fput(file);
out:
return error;
@@ -763,12 +757,9 @@
buf.count = 0;
buf.dirent = dirent;
- lock_kernel();
error = vfs_readdir(file, fillonedir32, &buf);
if (error >= 0)
error = buf.count;
- unlock_kernel();
-
fput(file);
out:
return error;
@@ -1032,7 +1023,6 @@
struct file *file;
long ret = -EBADF;
- lock_kernel();
file = fget(fd);
if(!file)
goto bad_file;
@@ -1045,7 +1035,6 @@
out:
fput(file);
bad_file:
- unlock_kernel();
return ret;
}
@@ -1055,7 +1044,6 @@
struct file *file;
int ret = -EBADF;
- lock_kernel();
file = fget(fd);
if(!file)
goto bad_file;
@@ -1070,7 +1058,6 @@
out:
fput(file);
bad_file:
- unlock_kernel();
return ret;
}
@@ -1856,7 +1843,6 @@
{
int version, err;
- lock_kernel();
version = call >> 16; /* hack for backward compatibility */
call &= 0xffff;
@@ -1908,7 +1894,6 @@
break;
}
- unlock_kernel();
return err;
}
@@ -3723,7 +3708,6 @@
}
kern_msg.msg_flags = user_flags;
- lock_kernel();
sock = sockfd_lookup(fd, &err);
if (sock != NULL) {
if (sock->file->f_flags & O_NONBLOCK)
@@ -3731,7 +3715,6 @@
err = sock_sendmsg(sock, &kern_msg, total_len);
sockfd_put(sock);
}
- unlock_kernel();
/* N.B. Use kfree here, as kern_msg.msg_controllen might change? */
if(ctl_buf != ctl)
@@ -3771,7 +3754,6 @@
cmsg_ptr = (unsigned long) kern_msg.msg_control;
kern_msg.msg_flags = 0;
- lock_kernel();
sock = sockfd_lookup(fd, &err);
if (sock != NULL) {
struct scm_cookie scm;
@@ -3779,6 +3761,7 @@
if (sock->file->f_flags & O_NONBLOCK)
user_flags |= MSG_DONTWAIT;
memset(&scm, 0, sizeof(scm));
+ lock_kernel();
err = sock->ops->recvmsg(sock, &kern_msg, total_len,
user_flags, &scm);
if(err >= 0) {
@@ -3809,9 +3792,9 @@
scm_detach_fds32(&kern_msg, &scm);
}
}
+ unlock_kernel();
sockfd_put(sock);
}
- unlock_kernel();
if(uaddr != NULL && err >= 0)
err = move_addr_to_user(addr, kern_msg.msg_namelen, uaddr,
@@ -4711,11 +4694,9 @@
sys32_personality(unsigned long personality)
{
int ret;
- lock_kernel();
if (current->personality == PER_LINUX32 && personality == PER_LINUX)
personality = PER_LINUX32;
ret = sys_personality(personality);
- unlock_kernel();
if (ret == PER_LINUX32)
ret = PER_LINUX;
return ret;
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)