projects
/
powerpc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
jmicron ATA: reimplement jmicron ATA quirk
[powerpc.git]
/
fs
/
inotify_user.c
diff --git
a/fs/inotify_user.c
b/fs/inotify_user.c
index
f238644
..
9f2224f
100644
(file)
--- a/
fs/inotify_user.c
+++ b/
fs/inotify_user.c
@@
-34,8
+34,8
@@
#include <asm/ioctls.h>
#include <asm/ioctls.h>
-static
kmem_cache_t
*watch_cachep __read_mostly;
-static
kmem_cache_t
*event_cachep __read_mostly;
+static
struct kmem_cache
*watch_cachep __read_mostly;
+static
struct kmem_cache
*event_cachep __read_mostly;
static struct vfsmount *inotify_mnt __read_mostly;
static struct vfsmount *inotify_mnt __read_mostly;
@@
-187,7
+187,7
@@
static struct inotify_kernel_event * kernel_event(s32 wd, u32 mask, u32 cookie,
{
struct inotify_kernel_event *kevent;
{
struct inotify_kernel_event *kevent;
- kevent = kmem_cache_alloc(event_cachep, GFP_
KERNEL
);
+ kevent = kmem_cache_alloc(event_cachep, GFP_
NOFS
);
if (unlikely(!kevent))
return NULL;
if (unlikely(!kevent))
return NULL;
@@
-455,8
+455,16
@@
static ssize_t inotify_read(struct file *file, char __user *buf,
break;
kevent = inotify_dev_get_event(dev);
break;
kevent = inotify_dev_get_event(dev);
- if (event_size + kevent->event.len > count)
+ if (event_size + kevent->event.len > count) {
+ if (ret == 0 && count > 0) {
+ /*
+ * could not get a single event because we
+ * didn't have enough buffer space.
+ */
+ ret = -EINVAL;
+ }
break;
break;
+ }
if (copy_to_user(buf, &kevent->event, event_size)) {
ret = -EFAULT;
if (copy_to_user(buf, &kevent->event, event_size)) {
ret = -EFAULT;
@@
-570,9
+578,9
@@
asmlinkage long sys_inotify_init(void)
dev->ih = ih;
filp->f_op = &inotify_fops;
dev->ih = ih;
filp->f_op = &inotify_fops;
- filp->f_
vfs
mnt = mntget(inotify_mnt);
- filp->f_dentry = dget(inotify_mnt->mnt_root);
- filp->f_mapping = filp->f_dentry->d_inode->i_mapping;
+ filp->f_
path.
mnt = mntget(inotify_mnt);
+ filp->f_
path.
dentry = dget(inotify_mnt->mnt_root);
+ filp->f_mapping = filp->f_
path.
dentry->d_inode->i_mapping;
filp->f_mode = FMODE_READ;
filp->f_flags = O_RDONLY;
filp->private_data = dev;
filp->f_mode = FMODE_READ;
filp->f_flags = O_RDONLY;
filp->private_data = dev;