@@ -570,24 +570,21 @@ static int check_fcntl_cmd(unsigned cmd)
570570
571571SYSCALL_DEFINE3 (fcntl , unsigned int , fd , unsigned int , cmd , unsigned long , arg )
572572{
573- struct fd f = fdget_raw (fd );
574- long err = - EBADF ;
573+ CLASS ( fd_raw , f ) (fd );
574+ long err ;
575575
576- if (! fd_file (f ))
577- goto out ;
576+ if (fd_empty (f ))
577+ return - EBADF ;
578578
579579 if (unlikely (fd_file (f )-> f_mode & FMODE_PATH )) {
580580 if (!check_fcntl_cmd (cmd ))
581- goto out1 ;
581+ return - EBADF ;
582582 }
583583
584584 err = security_file_fcntl (fd_file (f ), cmd , arg );
585585 if (!err )
586586 err = do_fcntl (fd , cmd , arg , fd_file (f ));
587587
588- out1 :
589- fdput (f );
590- out :
591588 return err ;
592589}
593590
@@ -596,21 +593,21 @@ SYSCALL_DEFINE3(fcntl64, unsigned int, fd, unsigned int, cmd,
596593 unsigned long , arg )
597594{
598595 void __user * argp = (void __user * )arg ;
599- struct fd f = fdget_raw (fd );
596+ CLASS ( fd_raw , f ) (fd );
600597 struct flock64 flock ;
601- long err = - EBADF ;
598+ long err ;
602599
603- if (! fd_file (f ))
604- goto out ;
600+ if (fd_empty (f ))
601+ return - EBADF ;
605602
606603 if (unlikely (fd_file (f )-> f_mode & FMODE_PATH )) {
607604 if (!check_fcntl_cmd (cmd ))
608- goto out1 ;
605+ return - EBADF ;
609606 }
610607
611608 err = security_file_fcntl (fd_file (f ), cmd , arg );
612609 if (err )
613- goto out1 ;
610+ return err ;
614611
615612 switch (cmd ) {
616613 case F_GETLK64 :
@@ -635,9 +632,6 @@ SYSCALL_DEFINE3(fcntl64, unsigned int, fd, unsigned int, cmd,
635632 err = do_fcntl (fd , cmd , arg , fd_file (f ));
636633 break ;
637634 }
638- out1 :
639- fdput (f );
640- out :
641635 return err ;
642636}
643637#endif
@@ -733,21 +727,21 @@ static int fixup_compat_flock(struct flock *flock)
733727static long do_compat_fcntl64 (unsigned int fd , unsigned int cmd ,
734728 compat_ulong_t arg )
735729{
736- struct fd f = fdget_raw (fd );
730+ CLASS ( fd_raw , f ) (fd );
737731 struct flock flock ;
738- long err = - EBADF ;
732+ long err ;
739733
740- if (! fd_file (f ))
741- return err ;
734+ if (fd_empty (f ))
735+ return - EBADF ;
742736
743737 if (unlikely (fd_file (f )-> f_mode & FMODE_PATH )) {
744738 if (!check_fcntl_cmd (cmd ))
745- goto out_put ;
739+ return - EBADF ;
746740 }
747741
748742 err = security_file_fcntl (fd_file (f ), cmd , arg );
749743 if (err )
750- goto out_put ;
744+ return err ;
751745
752746 switch (cmd ) {
753747 case F_GETLK :
@@ -790,8 +784,6 @@ static long do_compat_fcntl64(unsigned int fd, unsigned int cmd,
790784 err = do_fcntl (fd , cmd , arg , fd_file (f ));
791785 break ;
792786 }
793- out_put :
794- fdput (f );
795787 return err ;
796788}
797789
0 commit comments