diff options
author | Ralf Baechle <ralf@linux-mips.org> | 2000-02-23 00:40:54 +0000 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2000-02-23 00:40:54 +0000 |
commit | 529c593ece216e4aaffd36bd940cb94f1fa63129 (patch) | |
tree | 78f1c0b805f5656aa7b0417a043c5346f700a2cf /fs/minix/fsync.c | |
parent | 0bd079751d25808d1972baee5c4eaa1db2227257 (diff) |
Merge with 2.3.43. I did ignore all modifications to the qlogicisp.c
driver due to the Origin A64 hacks.
Diffstat (limited to 'fs/minix/fsync.c')
-rw-r--r-- | fs/minix/fsync.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/fs/minix/fsync.c b/fs/minix/fsync.c index 2fcdddf15..30794d27a 100644 --- a/fs/minix/fsync.c +++ b/fs/minix/fsync.c @@ -16,6 +16,7 @@ #include <linux/stat.h> #include <linux/fcntl.h> #include <linux/locks.h> +#include <linux/smp_lock.h> #include <linux/fs.h> #include <linux/minix_fs.h> @@ -148,10 +149,7 @@ static int V1_minix_sync_file(struct inode * inode, struct file * file) { int wait, err = 0; - if (!(S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode) || - S_ISLNK(inode->i_mode))) - return -EINVAL; - + lock_kernel(); for (wait=0; wait<=1; wait++) { err |= V1_sync_direct(inode, wait); @@ -159,6 +157,7 @@ static int V1_minix_sync_file(struct inode * inode, struct file * file) err |= V1_sync_dindirect(inode, inode->u.minix_i.u.i1_data + 8, wait); } err |= minix_sync_inode (inode); + unlock_kernel(); return (err < 0) ? -EIO : 0; } @@ -309,10 +308,7 @@ static int V2_minix_sync_file(struct inode * inode, struct file * file) { int wait, err = 0; - if (!(S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode) || - S_ISLNK(inode->i_mode))) - return -EINVAL; - + lock_kernel(); for (wait=0; wait<=1; wait++) { err |= V2_sync_direct(inode, wait); @@ -324,6 +320,7 @@ static int V2_minix_sync_file(struct inode * inode, struct file * file) (unsigned long *) inode->u.minix_i.u.i2_data + 9, wait); } err |= minix_sync_inode (inode); + unlock_kernel(); return (err < 0) ? -EIO : 0; } @@ -336,6 +333,10 @@ int minix_sync_file(struct file * file, struct dentry *dentry) { struct inode *inode = dentry->d_inode; + if (!(S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode) || + S_ISLNK(inode->i_mode))) + return -EINVAL; + if (INODE_VERSION(inode) == MINIX_V1) return V1_minix_sync_file(inode, file); else |