Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/zohar/linux...
[platform/kernel/linux-starfive.git] / fs / fcntl.c
1 /*
2  *  linux/fs/fcntl.c
3  *
4  *  Copyright (C) 1991, 1992  Linus Torvalds
5  */
6
7 #include <linux/syscalls.h>
8 #include <linux/init.h>
9 #include <linux/mm.h>
10 #include <linux/fs.h>
11 #include <linux/file.h>
12 #include <linux/fdtable.h>
13 #include <linux/capability.h>
14 #include <linux/dnotify.h>
15 #include <linux/slab.h>
16 #include <linux/module.h>
17 #include <linux/pipe_fs_i.h>
18 #include <linux/security.h>
19 #include <linux/ptrace.h>
20 #include <linux/signal.h>
21 #include <linux/rcupdate.h>
22 #include <linux/pid_namespace.h>
23 #include <linux/user_namespace.h>
24 #include <linux/shmem_fs.h>
25
26 #include <asm/poll.h>
27 #include <asm/siginfo.h>
28 #include <asm/uaccess.h>
29
30 #define SETFL_MASK (O_APPEND | O_NONBLOCK | O_NDELAY | O_DIRECT | O_NOATIME)
31
32 static int setfl(int fd, struct file * filp, unsigned long arg)
33 {
34         struct inode * inode = file_inode(filp);
35         int error = 0;
36
37         /*
38          * O_APPEND cannot be cleared if the file is marked as append-only
39          * and the file is open for write.
40          */
41         if (((arg ^ filp->f_flags) & O_APPEND) && IS_APPEND(inode))
42                 return -EPERM;
43
44         /* O_NOATIME can only be set by the owner or superuser */
45         if ((arg & O_NOATIME) && !(filp->f_flags & O_NOATIME))
46                 if (!inode_owner_or_capable(inode))
47                         return -EPERM;
48
49         /* required for strict SunOS emulation */
50         if (O_NONBLOCK != O_NDELAY)
51                if (arg & O_NDELAY)
52                    arg |= O_NONBLOCK;
53
54         if (arg & O_DIRECT) {
55                 if (!filp->f_mapping || !filp->f_mapping->a_ops ||
56                         !filp->f_mapping->a_ops->direct_IO)
57                                 return -EINVAL;
58         }
59
60         if (filp->f_op->check_flags)
61                 error = filp->f_op->check_flags(arg);
62         if (error)
63                 return error;
64
65         /*
66          * ->fasync() is responsible for setting the FASYNC bit.
67          */
68         if (((arg ^ filp->f_flags) & FASYNC) && filp->f_op->fasync) {
69                 error = filp->f_op->fasync(fd, filp, (arg & FASYNC) != 0);
70                 if (error < 0)
71                         goto out;
72                 if (error > 0)
73                         error = 0;
74         }
75         spin_lock(&filp->f_lock);
76         filp->f_flags = (arg & SETFL_MASK) | (filp->f_flags & ~SETFL_MASK);
77         spin_unlock(&filp->f_lock);
78
79  out:
80         return error;
81 }
82
83 static void f_modown(struct file *filp, struct pid *pid, enum pid_type type,
84                      int force)
85 {
86         write_lock_irq(&filp->f_owner.lock);
87         if (force || !filp->f_owner.pid) {
88                 put_pid(filp->f_owner.pid);
89                 filp->f_owner.pid = get_pid(pid);
90                 filp->f_owner.pid_type = type;
91
92                 if (pid) {
93                         const struct cred *cred = current_cred();
94                         filp->f_owner.uid = cred->uid;
95                         filp->f_owner.euid = cred->euid;
96                 }
97         }
98         write_unlock_irq(&filp->f_owner.lock);
99 }
100
101 int __f_setown(struct file *filp, struct pid *pid, enum pid_type type,
102                 int force)
103 {
104         int err;
105
106         err = security_file_set_fowner(filp);
107         if (err)
108                 return err;
109
110         f_modown(filp, pid, type, force);
111         return 0;
112 }
113 EXPORT_SYMBOL(__f_setown);
114
115 int f_setown(struct file *filp, unsigned long arg, int force)
116 {
117         enum pid_type type;
118         struct pid *pid;
119         int who = arg;
120         int result;
121         type = PIDTYPE_PID;
122         if (who < 0) {
123                 type = PIDTYPE_PGID;
124                 who = -who;
125         }
126         rcu_read_lock();
127         pid = find_vpid(who);
128         result = __f_setown(filp, pid, type, force);
129         rcu_read_unlock();
130         return result;
131 }
132 EXPORT_SYMBOL(f_setown);
133
134 void f_delown(struct file *filp)
135 {
136         f_modown(filp, NULL, PIDTYPE_PID, 1);
137 }
138
139 pid_t f_getown(struct file *filp)
140 {
141         pid_t pid;
142         read_lock(&filp->f_owner.lock);
143         pid = pid_vnr(filp->f_owner.pid);
144         if (filp->f_owner.pid_type == PIDTYPE_PGID)
145                 pid = -pid;
146         read_unlock(&filp->f_owner.lock);
147         return pid;
148 }
149
150 static int f_setown_ex(struct file *filp, unsigned long arg)
151 {
152         struct f_owner_ex __user *owner_p = (void __user *)arg;
153         struct f_owner_ex owner;
154         struct pid *pid;
155         int type;
156         int ret;
157
158         ret = copy_from_user(&owner, owner_p, sizeof(owner));
159         if (ret)
160                 return -EFAULT;
161
162         switch (owner.type) {
163         case F_OWNER_TID:
164                 type = PIDTYPE_MAX;
165                 break;
166
167         case F_OWNER_PID:
168                 type = PIDTYPE_PID;
169                 break;
170
171         case F_OWNER_PGRP:
172                 type = PIDTYPE_PGID;
173                 break;
174
175         default:
176                 return -EINVAL;
177         }
178
179         rcu_read_lock();
180         pid = find_vpid(owner.pid);
181         if (owner.pid && !pid)
182                 ret = -ESRCH;
183         else
184                 ret = __f_setown(filp, pid, type, 1);
185         rcu_read_unlock();
186
187         return ret;
188 }
189
190 static int f_getown_ex(struct file *filp, unsigned long arg)
191 {
192         struct f_owner_ex __user *owner_p = (void __user *)arg;
193         struct f_owner_ex owner;
194         int ret = 0;
195
196         read_lock(&filp->f_owner.lock);
197         owner.pid = pid_vnr(filp->f_owner.pid);
198         switch (filp->f_owner.pid_type) {
199         case PIDTYPE_MAX:
200                 owner.type = F_OWNER_TID;
201                 break;
202
203         case PIDTYPE_PID:
204                 owner.type = F_OWNER_PID;
205                 break;
206
207         case PIDTYPE_PGID:
208                 owner.type = F_OWNER_PGRP;
209                 break;
210
211         default:
212                 WARN_ON(1);
213                 ret = -EINVAL;
214                 break;
215         }
216         read_unlock(&filp->f_owner.lock);
217
218         if (!ret) {
219                 ret = copy_to_user(owner_p, &owner, sizeof(owner));
220                 if (ret)
221                         ret = -EFAULT;
222         }
223         return ret;
224 }
225
226 #ifdef CONFIG_CHECKPOINT_RESTORE
227 static int f_getowner_uids(struct file *filp, unsigned long arg)
228 {
229         struct user_namespace *user_ns = current_user_ns();
230         uid_t __user *dst = (void __user *)arg;
231         uid_t src[2];
232         int err;
233
234         read_lock(&filp->f_owner.lock);
235         src[0] = from_kuid(user_ns, filp->f_owner.uid);
236         src[1] = from_kuid(user_ns, filp->f_owner.euid);
237         read_unlock(&filp->f_owner.lock);
238
239         err  = put_user(src[0], &dst[0]);
240         err |= put_user(src[1], &dst[1]);
241
242         return err;
243 }
244 #else
245 static int f_getowner_uids(struct file *filp, unsigned long arg)
246 {
247         return -EINVAL;
248 }
249 #endif
250
251 static long do_fcntl(int fd, unsigned int cmd, unsigned long arg,
252                 struct file *filp)
253 {
254         long err = -EINVAL;
255
256         switch (cmd) {
257         case F_DUPFD:
258                 err = f_dupfd(arg, filp, 0);
259                 break;
260         case F_DUPFD_CLOEXEC:
261                 err = f_dupfd(arg, filp, O_CLOEXEC);
262                 break;
263         case F_GETFD:
264                 err = get_close_on_exec(fd) ? FD_CLOEXEC : 0;
265                 break;
266         case F_SETFD:
267                 err = 0;
268                 set_close_on_exec(fd, arg & FD_CLOEXEC);
269                 break;
270         case F_GETFL:
271                 err = filp->f_flags;
272                 break;
273         case F_SETFL:
274                 err = setfl(fd, filp, arg);
275                 break;
276 #if BITS_PER_LONG != 32
277         /* 32-bit arches must use fcntl64() */
278         case F_OFD_GETLK:
279 #endif
280         case F_GETLK:
281                 err = fcntl_getlk(filp, cmd, (struct flock __user *) arg);
282                 break;
283 #if BITS_PER_LONG != 32
284         /* 32-bit arches must use fcntl64() */
285         case F_OFD_SETLK:
286         case F_OFD_SETLKW:
287 #endif
288                 /* Fallthrough */
289         case F_SETLK:
290         case F_SETLKW:
291                 err = fcntl_setlk(fd, filp, cmd, (struct flock __user *) arg);
292                 break;
293         case F_GETOWN:
294                 /*
295                  * XXX If f_owner is a process group, the
296                  * negative return value will get converted
297                  * into an error.  Oops.  If we keep the
298                  * current syscall conventions, the only way
299                  * to fix this will be in libc.
300                  */
301                 err = f_getown(filp);
302                 force_successful_syscall_return();
303                 break;
304         case F_SETOWN:
305                 err = f_setown(filp, arg, 1);
306                 break;
307         case F_GETOWN_EX:
308                 err = f_getown_ex(filp, arg);
309                 break;
310         case F_SETOWN_EX:
311                 err = f_setown_ex(filp, arg);
312                 break;
313         case F_GETOWNER_UIDS:
314                 err = f_getowner_uids(filp, arg);
315                 break;
316         case F_GETSIG:
317                 err = filp->f_owner.signum;
318                 break;
319         case F_SETSIG:
320                 /* arg == 0 restores default behaviour. */
321                 if (!valid_signal(arg)) {
322                         break;
323                 }
324                 err = 0;
325                 filp->f_owner.signum = arg;
326                 break;
327         case F_GETLEASE:
328                 err = fcntl_getlease(filp);
329                 break;
330         case F_SETLEASE:
331                 err = fcntl_setlease(fd, filp, arg);
332                 break;
333         case F_NOTIFY:
334                 err = fcntl_dirnotify(fd, filp, arg);
335                 break;
336         case F_SETPIPE_SZ:
337         case F_GETPIPE_SZ:
338                 err = pipe_fcntl(filp, cmd, arg);
339                 break;
340         case F_ADD_SEALS:
341         case F_GET_SEALS:
342                 err = shmem_fcntl(filp, cmd, arg);
343                 break;
344         default:
345                 break;
346         }
347         return err;
348 }
349
350 static int check_fcntl_cmd(unsigned cmd)
351 {
352         switch (cmd) {
353         case F_DUPFD:
354         case F_DUPFD_CLOEXEC:
355         case F_GETFD:
356         case F_SETFD:
357         case F_GETFL:
358                 return 1;
359         }
360         return 0;
361 }
362
363 SYSCALL_DEFINE3(fcntl, unsigned int, fd, unsigned int, cmd, unsigned long, arg)
364 {       
365         struct fd f = fdget_raw(fd);
366         long err = -EBADF;
367
368         if (!f.file)
369                 goto out;
370
371         if (unlikely(f.file->f_mode & FMODE_PATH)) {
372                 if (!check_fcntl_cmd(cmd))
373                         goto out1;
374         }
375
376         err = security_file_fcntl(f.file, cmd, arg);
377         if (!err)
378                 err = do_fcntl(fd, cmd, arg, f.file);
379
380 out1:
381         fdput(f);
382 out:
383         return err;
384 }
385
386 #if BITS_PER_LONG == 32
387 SYSCALL_DEFINE3(fcntl64, unsigned int, fd, unsigned int, cmd,
388                 unsigned long, arg)
389 {       
390         struct fd f = fdget_raw(fd);
391         long err = -EBADF;
392
393         if (!f.file)
394                 goto out;
395
396         if (unlikely(f.file->f_mode & FMODE_PATH)) {
397                 if (!check_fcntl_cmd(cmd))
398                         goto out1;
399         }
400
401         err = security_file_fcntl(f.file, cmd, arg);
402         if (err)
403                 goto out1;
404         
405         switch (cmd) {
406         case F_GETLK64:
407         case F_OFD_GETLK:
408                 err = fcntl_getlk64(f.file, cmd, (struct flock64 __user *) arg);
409                 break;
410         case F_SETLK64:
411         case F_SETLKW64:
412         case F_OFD_SETLK:
413         case F_OFD_SETLKW:
414                 err = fcntl_setlk64(fd, f.file, cmd,
415                                 (struct flock64 __user *) arg);
416                 break;
417         default:
418                 err = do_fcntl(fd, cmd, arg, f.file);
419                 break;
420         }
421 out1:
422         fdput(f);
423 out:
424         return err;
425 }
426 #endif
427
428 /* Table to convert sigio signal codes into poll band bitmaps */
429
430 static const long band_table[NSIGPOLL] = {
431         POLLIN | POLLRDNORM,                    /* POLL_IN */
432         POLLOUT | POLLWRNORM | POLLWRBAND,      /* POLL_OUT */
433         POLLIN | POLLRDNORM | POLLMSG,          /* POLL_MSG */
434         POLLERR,                                /* POLL_ERR */
435         POLLPRI | POLLRDBAND,                   /* POLL_PRI */
436         POLLHUP | POLLERR                       /* POLL_HUP */
437 };
438
439 static inline int sigio_perm(struct task_struct *p,
440                              struct fown_struct *fown, int sig)
441 {
442         const struct cred *cred;
443         int ret;
444
445         rcu_read_lock();
446         cred = __task_cred(p);
447         ret = ((uid_eq(fown->euid, GLOBAL_ROOT_UID) ||
448                 uid_eq(fown->euid, cred->suid) || uid_eq(fown->euid, cred->uid) ||
449                 uid_eq(fown->uid,  cred->suid) || uid_eq(fown->uid,  cred->uid)) &&
450                !security_file_send_sigiotask(p, fown, sig));
451         rcu_read_unlock();
452         return ret;
453 }
454
455 static void send_sigio_to_task(struct task_struct *p,
456                                struct fown_struct *fown,
457                                int fd, int reason, int group)
458 {
459         /*
460          * F_SETSIG can change ->signum lockless in parallel, make
461          * sure we read it once and use the same value throughout.
462          */
463         int signum = ACCESS_ONCE(fown->signum);
464
465         if (!sigio_perm(p, fown, signum))
466                 return;
467
468         switch (signum) {
469                 siginfo_t si;
470                 default:
471                         /* Queue a rt signal with the appropriate fd as its
472                            value.  We use SI_SIGIO as the source, not 
473                            SI_KERNEL, since kernel signals always get 
474                            delivered even if we can't queue.  Failure to
475                            queue in this case _should_ be reported; we fall
476                            back to SIGIO in that case. --sct */
477                         si.si_signo = signum;
478                         si.si_errno = 0;
479                         si.si_code  = reason;
480                         /* Make sure we are called with one of the POLL_*
481                            reasons, otherwise we could leak kernel stack into
482                            userspace.  */
483                         BUG_ON((reason & __SI_MASK) != __SI_POLL);
484                         if (reason - POLL_IN >= NSIGPOLL)
485                                 si.si_band  = ~0L;
486                         else
487                                 si.si_band = band_table[reason - POLL_IN];
488                         si.si_fd    = fd;
489                         if (!do_send_sig_info(signum, &si, p, group))
490                                 break;
491                 /* fall-through: fall back on the old plain SIGIO signal */
492                 case 0:
493                         do_send_sig_info(SIGIO, SEND_SIG_PRIV, p, group);
494         }
495 }
496
497 void send_sigio(struct fown_struct *fown, int fd, int band)
498 {
499         struct task_struct *p;
500         enum pid_type type;
501         struct pid *pid;
502         int group = 1;
503         
504         read_lock(&fown->lock);
505
506         type = fown->pid_type;
507         if (type == PIDTYPE_MAX) {
508                 group = 0;
509                 type = PIDTYPE_PID;
510         }
511
512         pid = fown->pid;
513         if (!pid)
514                 goto out_unlock_fown;
515         
516         read_lock(&tasklist_lock);
517         do_each_pid_task(pid, type, p) {
518                 send_sigio_to_task(p, fown, fd, band, group);
519         } while_each_pid_task(pid, type, p);
520         read_unlock(&tasklist_lock);
521  out_unlock_fown:
522         read_unlock(&fown->lock);
523 }
524
525 static void send_sigurg_to_task(struct task_struct *p,
526                                 struct fown_struct *fown, int group)
527 {
528         if (sigio_perm(p, fown, SIGURG))
529                 do_send_sig_info(SIGURG, SEND_SIG_PRIV, p, group);
530 }
531
532 int send_sigurg(struct fown_struct *fown)
533 {
534         struct task_struct *p;
535         enum pid_type type;
536         struct pid *pid;
537         int group = 1;
538         int ret = 0;
539         
540         read_lock(&fown->lock);
541
542         type = fown->pid_type;
543         if (type == PIDTYPE_MAX) {
544                 group = 0;
545                 type = PIDTYPE_PID;
546         }
547
548         pid = fown->pid;
549         if (!pid)
550                 goto out_unlock_fown;
551
552         ret = 1;
553         
554         read_lock(&tasklist_lock);
555         do_each_pid_task(pid, type, p) {
556                 send_sigurg_to_task(p, fown, group);
557         } while_each_pid_task(pid, type, p);
558         read_unlock(&tasklist_lock);
559  out_unlock_fown:
560         read_unlock(&fown->lock);
561         return ret;
562 }
563
564 static DEFINE_SPINLOCK(fasync_lock);
565 static struct kmem_cache *fasync_cache __read_mostly;
566
567 static void fasync_free_rcu(struct rcu_head *head)
568 {
569         kmem_cache_free(fasync_cache,
570                         container_of(head, struct fasync_struct, fa_rcu));
571 }
572
573 /*
574  * Remove a fasync entry. If successfully removed, return
575  * positive and clear the FASYNC flag. If no entry exists,
576  * do nothing and return 0.
577  *
578  * NOTE! It is very important that the FASYNC flag always
579  * match the state "is the filp on a fasync list".
580  *
581  */
582 int fasync_remove_entry(struct file *filp, struct fasync_struct **fapp)
583 {
584         struct fasync_struct *fa, **fp;
585         int result = 0;
586
587         spin_lock(&filp->f_lock);
588         spin_lock(&fasync_lock);
589         for (fp = fapp; (fa = *fp) != NULL; fp = &fa->fa_next) {
590                 if (fa->fa_file != filp)
591                         continue;
592
593                 spin_lock_irq(&fa->fa_lock);
594                 fa->fa_file = NULL;
595                 spin_unlock_irq(&fa->fa_lock);
596
597                 *fp = fa->fa_next;
598                 call_rcu(&fa->fa_rcu, fasync_free_rcu);
599                 filp->f_flags &= ~FASYNC;
600                 result = 1;
601                 break;
602         }
603         spin_unlock(&fasync_lock);
604         spin_unlock(&filp->f_lock);
605         return result;
606 }
607
608 struct fasync_struct *fasync_alloc(void)
609 {
610         return kmem_cache_alloc(fasync_cache, GFP_KERNEL);
611 }
612
613 /*
614  * NOTE! This can be used only for unused fasync entries:
615  * entries that actually got inserted on the fasync list
616  * need to be released by rcu - see fasync_remove_entry.
617  */
618 void fasync_free(struct fasync_struct *new)
619 {
620         kmem_cache_free(fasync_cache, new);
621 }
622
623 /*
624  * Insert a new entry into the fasync list.  Return the pointer to the
625  * old one if we didn't use the new one.
626  *
627  * NOTE! It is very important that the FASYNC flag always
628  * match the state "is the filp on a fasync list".
629  */
630 struct fasync_struct *fasync_insert_entry(int fd, struct file *filp, struct fasync_struct **fapp, struct fasync_struct *new)
631 {
632         struct fasync_struct *fa, **fp;
633
634         spin_lock(&filp->f_lock);
635         spin_lock(&fasync_lock);
636         for (fp = fapp; (fa = *fp) != NULL; fp = &fa->fa_next) {
637                 if (fa->fa_file != filp)
638                         continue;
639
640                 spin_lock_irq(&fa->fa_lock);
641                 fa->fa_fd = fd;
642                 spin_unlock_irq(&fa->fa_lock);
643                 goto out;
644         }
645
646         spin_lock_init(&new->fa_lock);
647         new->magic = FASYNC_MAGIC;
648         new->fa_file = filp;
649         new->fa_fd = fd;
650         new->fa_next = *fapp;
651         rcu_assign_pointer(*fapp, new);
652         filp->f_flags |= FASYNC;
653
654 out:
655         spin_unlock(&fasync_lock);
656         spin_unlock(&filp->f_lock);
657         return fa;
658 }
659
660 /*
661  * Add a fasync entry. Return negative on error, positive if
662  * added, and zero if did nothing but change an existing one.
663  */
664 static int fasync_add_entry(int fd, struct file *filp, struct fasync_struct **fapp)
665 {
666         struct fasync_struct *new;
667
668         new = fasync_alloc();
669         if (!new)
670                 return -ENOMEM;
671
672         /*
673          * fasync_insert_entry() returns the old (update) entry if
674          * it existed.
675          *
676          * So free the (unused) new entry and return 0 to let the
677          * caller know that we didn't add any new fasync entries.
678          */
679         if (fasync_insert_entry(fd, filp, fapp, new)) {
680                 fasync_free(new);
681                 return 0;
682         }
683
684         return 1;
685 }
686
687 /*
688  * fasync_helper() is used by almost all character device drivers
689  * to set up the fasync queue, and for regular files by the file
690  * lease code. It returns negative on error, 0 if it did no changes
691  * and positive if it added/deleted the entry.
692  */
693 int fasync_helper(int fd, struct file * filp, int on, struct fasync_struct **fapp)
694 {
695         if (!on)
696                 return fasync_remove_entry(filp, fapp);
697         return fasync_add_entry(fd, filp, fapp);
698 }
699
700 EXPORT_SYMBOL(fasync_helper);
701
702 /*
703  * rcu_read_lock() is held
704  */
705 static void kill_fasync_rcu(struct fasync_struct *fa, int sig, int band)
706 {
707         while (fa) {
708                 struct fown_struct *fown;
709                 unsigned long flags;
710
711                 if (fa->magic != FASYNC_MAGIC) {
712                         printk(KERN_ERR "kill_fasync: bad magic number in "
713                                "fasync_struct!\n");
714                         return;
715                 }
716                 spin_lock_irqsave(&fa->fa_lock, flags);
717                 if (fa->fa_file) {
718                         fown = &fa->fa_file->f_owner;
719                         /* Don't send SIGURG to processes which have not set a
720                            queued signum: SIGURG has its own default signalling
721                            mechanism. */
722                         if (!(sig == SIGURG && fown->signum == 0))
723                                 send_sigio(fown, fa->fa_fd, band);
724                 }
725                 spin_unlock_irqrestore(&fa->fa_lock, flags);
726                 fa = rcu_dereference(fa->fa_next);
727         }
728 }
729
730 void kill_fasync(struct fasync_struct **fp, int sig, int band)
731 {
732         /* First a quick test without locking: usually
733          * the list is empty.
734          */
735         if (*fp) {
736                 rcu_read_lock();
737                 kill_fasync_rcu(rcu_dereference(*fp), sig, band);
738                 rcu_read_unlock();
739         }
740 }
741 EXPORT_SYMBOL(kill_fasync);
742
743 static int __init fcntl_init(void)
744 {
745         /*
746          * Please add new bits here to ensure allocation uniqueness.
747          * Exceptions: O_NONBLOCK is a two bit define on parisc; O_NDELAY
748          * is defined as O_NONBLOCK on some platforms and not on others.
749          */
750         BUILD_BUG_ON(20 - 1 /* for O_RDONLY being 0 */ != HWEIGHT32(
751                 O_RDONLY        | O_WRONLY      | O_RDWR        |
752                 O_CREAT         | O_EXCL        | O_NOCTTY      |
753                 O_TRUNC         | O_APPEND      | /* O_NONBLOCK | */
754                 __O_SYNC        | O_DSYNC       | FASYNC        |
755                 O_DIRECT        | O_LARGEFILE   | O_DIRECTORY   |
756                 O_NOFOLLOW      | O_NOATIME     | O_CLOEXEC     |
757                 __FMODE_EXEC    | O_PATH        | __O_TMPFILE
758                 ));
759
760         fasync_cache = kmem_cache_create("fasync_cache",
761                 sizeof(struct fasync_struct), 0, SLAB_PANIC, NULL);
762         return 0;
763 }
764
765 module_init(fcntl_init)