]> git.hungrycats.org Git - linux/commitdiff
[PATCH] suser() -> capable() checks
authorColin Slater <hoho@binbash.net>
Tue, 7 May 2002 03:32:58 +0000 (20:32 -0700)
committerLinus Torvalds <torvalds@home.transmeta.com>
Tue, 7 May 2002 03:32:58 +0000 (20:32 -0700)
  Trivial patch to change some instances of suser() and fsuser() to
proper capable() checks.

20 files changed:
arch/ppc64/kernel/ioctl32.c
arch/sparc64/kernel/ioctl32.c
arch/x86_64/ia32/ia32_ioctl.c
arch/x86_64/kernel/mtrr.c
drivers/block/cpqarray.c
drivers/block/swim3.c
drivers/block/swim_iop.c
drivers/char/ip2main.c
drivers/char/moxa.c
drivers/char/mxser.c
drivers/char/rio/rio_linux.c
drivers/char/rocket.c
drivers/char/serial167.c
drivers/char/tty_io.c
drivers/char/vt.c
drivers/media/video/zr36120.c
drivers/pcmcia/ds.c
drivers/s390/char/tubtty.c
drivers/scsi/cpqfcTSinit.c
fs/ufs/balloc.c

index 2d71bb02b97684f37a5e475c58f84c0663e25e62..14671ee66ea5422332463532d5de53eb24390a2c 100644 (file)
@@ -1779,9 +1779,9 @@ static int vt_check(struct file *file)
        
        /*
         * To have permissions to do most of the vt ioctls, we either have
-        * to be the owner of the tty, or super-user.
+        * to be the owner of the tty, or have CAP_SYS_TTY_CONFIG.
         */
-       if (current->tty == tty || suser())
+       if (current->tty == tty || capable(CAP_SYS_TTY_CONFIG))
                return 1;
        return 0;                                                    
 }
index cfc2dc12fffdc00cce67d348c86fcaf73aa29cbc..d6050f5c886c0d28a5bb3b0ad553199c13950523 100644 (file)
@@ -2059,9 +2059,9 @@ static int vt_check(struct file *file)
        
        /*
         * To have permissions to do most of the vt ioctls, we either have
-        * to be the owner of the tty, or super-user.
+        * to be the owner of the tty, or have CAP_SYS_TTY_CONFIG.
         */
-       if (current->tty == tty || suser())
+       if (current->tty == tty || capable(CAP_SYS_TTY_CONFIG))
                return 1;
        return 0;                                                    
 }
index 9a09e859b14a34fd4e51703228b94ed58019be78..8a38354c786f09cae642f323d3234de657d7f84e 100644 (file)
@@ -1648,9 +1648,9 @@ static int vt_check(struct file *file)
        
        /*
         * To have permissions to do most of the vt ioctls, we either have
-        * to be the owner of the tty, or super-user.
+        * to be the owner of the tty, or have CAP_SYS_TTY_CONFIG.
         */
-       if (current->tty == tty || suser())
+       if (current->tty == tty || capable(CAP_SYS_TTY_CONFIG))
                return 1;
        return 0;                                                    
 }
index a4386bc5701cf2d73ceb3325db4d880fd8d10981..f8171fd94342841adab24beb37c99eda02429774 100644 (file)
@@ -983,7 +983,7 @@ static ssize_t mtrr_write (struct file *file, const char *buf,
     char *ptr;
     char line[LINE_SIZE];
 
-       if (!suser ())
+       if (!capable (CAP_SYS_ADMIN))
                return -EPERM;
 
     /*  Can't seek (pwrite) on this device  */
@@ -1071,7 +1071,7 @@ static int mtrr_ioctl (struct inode *inode, struct file *file,
        return -ENOIOCTLCMD;
 
       case MTRRIOC_ADD_ENTRY:
-               if (!suser ())
+               if (!capable (CAP_SYS_ADMIN))
                        return -EPERM;
                if (copy_from_user (&sentry, (void *) arg, sizeof sentry))
            return -EFAULT;
@@ -1083,7 +1083,7 @@ static int mtrr_ioctl (struct inode *inode, struct file *file,
        break;
 
       case MTRRIOC_SET_ENTRY:
-               if (!suser ())
+               if (!capable (CAP_SYS_ADMIN))
                        return -EPERM;
                if (copy_from_user (&sentry, (void *) arg, sizeof sentry))
            return -EFAULT;
@@ -1093,7 +1093,7 @@ static int mtrr_ioctl (struct inode *inode, struct file *file,
        break;
 
       case MTRRIOC_DEL_ENTRY:
-               if (!suser ())
+               if (!capable (CAP_SYS_ADMIN))
                        return -EPERM;
                if (copy_from_user (&sentry, (void *) arg, sizeof sentry))
            return -EFAULT;
@@ -1103,7 +1103,7 @@ static int mtrr_ioctl (struct inode *inode, struct file *file,
        break;
 
       case MTRRIOC_KILL_ENTRY:
-               if (!suser ())
+               if (!capable (CAP_SYS_ADMIN))
                        return -EPERM;
                if (copy_from_user (&sentry, (void *) arg, sizeof sentry))
            return -EFAULT;
@@ -1134,7 +1134,7 @@ static int mtrr_ioctl (struct inode *inode, struct file *file,
        break;
 
       case MTRRIOC_ADD_PAGE_ENTRY:
-               if (!suser ())
+               if (!capable (CAP_SYS_ADMIN))
                        return -EPERM;
                if (copy_from_user (&sentry, (void *) arg, sizeof sentry))
            return -EFAULT;
@@ -1146,7 +1146,7 @@ static int mtrr_ioctl (struct inode *inode, struct file *file,
        break;
 
       case MTRRIOC_SET_PAGE_ENTRY:
-               if (!suser ())
+               if (!capable (CAP_SYS_ADMIN))
                        return -EPERM;
                if (copy_from_user (&sentry, (void *) arg, sizeof sentry))
            return -EFAULT;
@@ -1156,7 +1156,7 @@ static int mtrr_ioctl (struct inode *inode, struct file *file,
        break;
 
       case MTRRIOC_DEL_PAGE_ENTRY:
-               if (!suser ())
+               if (!capable (CAP_SYS_ADMIN))
                        return -EPERM;
                if (copy_from_user (&sentry, (void *) arg, sizeof sentry))
            return -EFAULT;
@@ -1166,7 +1166,7 @@ static int mtrr_ioctl (struct inode *inode, struct file *file,
        break;
 
       case MTRRIOC_KILL_PAGE_ENTRY:
-               if (!suser ())
+               if (!capable (CAP_SYS_ADMIN))
                        return -EPERM;
                if (copy_from_user (&sentry, (void *) arg, sizeof sentry))
            return -EFAULT;
index c871070894ed8ef3315636339692082483df83bf..314ade57968d57c048c2485b6d289a73d8ae45a7 100644 (file)
@@ -769,7 +769,7 @@ static int ida_open(struct inode *inode, struct file *filep)
        if (ctlr > MAX_CTLR || hba[ctlr] == NULL)
                return -ENXIO;
 
-       if (!suser() && ida_sizes[(ctlr << CTLR_SHIFT) +
+       if (!capable(CAP_SYS_RAWIO) && ida_sizes[(ctlr << CTLR_SHIFT) +
                                                minor(inode->i_rdev)] == 0)
                return -ENXIO;
 
@@ -779,7 +779,7 @@ static int ida_open(struct inode *inode, struct file *filep)
         * but I'm already using way to many device nodes to claim another one
         * for "raw controller".
         */
-       if (suser()
+       if (capable(CAP_SYS_ADMIN)
                && ida_sizes[(ctlr << CTLR_SHIFT) + minor(inode->i_rdev)] == 0 
                && minor(inode->i_rdev) != 0)
                return -ENXIO;
@@ -1121,7 +1121,7 @@ static int ida_ioctl(struct inode *inode, struct file *filep, unsigned int cmd,
        case BLKRRPART:
                return revalidate_logvol(inode->i_rdev, 1);
        case IDAPASSTHRU:
-               if (!suser()) return -EPERM;
+               if (!capable(CAP_SYS_RAWIO)) return -EPERM;
                error = copy_from_user(&my_io, io, sizeof(my_io));
                if (error) return error;
                error = ida_ctlr_ioctl(ctlr, dsk, &my_io);
index 86aa180e696ed1931133c2c4b31b063ad2a30a60..5f39e924b54b295e0b4b4b73f18b672f75c00098 100644 (file)
@@ -820,7 +820,7 @@ static int floppy_ioctl(struct inode *inode, struct file *filp,
        if (devnum >= floppy_count)
                return -ENODEV;
                
-       if ((cmd & 0x80) && !suser())
+       if ((cmd & 0x80) && !capable(CAP_SYS_ADMIN))
                return -EPERM;
 
        fs = &floppy_states[devnum];
index 68a6c978328c8ed59967bba13a376154ca519516..cf99a007494870810c3494d8af06514c06fc50b1 100644 (file)
@@ -348,7 +348,7 @@ static int floppy_ioctl(struct inode *inode, struct file *filp,
        if (devnum >= floppy_count)
                return -ENODEV;
                
-       if ((cmd & 0x80) && !suser())
+       if ((cmd & 0x80) && !capable(CAP_SYS_ADMIN))
                return -EPERM;
 
        fs = &floppy_states[devnum];
index 02e234a642bbc6dc86dbccb72e78818389d5ccfd..3027788435f7f0e626b1967d9f71ff86d70f7906 100644 (file)
@@ -2662,7 +2662,7 @@ set_serial_info( i2ChanStrPtr pCh, struct serial_struct *new_info )
        old_flags = pCh->flags;
        old_baud_divisor = pCh->BaudDivisor;
 
-       if ( !suser() ) {
+       if ( !capable(CAP_SYS_ADMIN) ) {
                if ( ( ns.close_delay != pCh->ClosingDelay ) ||
                    ( (ns.flags & ~ASYNC_USR_MASK) !=
                      (pCh->flags & ~ASYNC_USR_MASK) ) ) {
index f341ceed81ae66ba17d42de190a611efa11a1518..ef0c3b67642063635607f22bcf287e07d20c167c 100644 (file)
@@ -2799,7 +2799,7 @@ static int moxa_set_serial_info(struct moxa_str *info,
            (new_serial.baud_base != 921600))
                return (-EPERM);
 
-       if (!suser()) {
+       if (!capable(CAP_SYS_ADMIN)) {
                if (((new_serial.flags & ~ASYNC_USR_MASK) !=
                     (info->asyncflags & ~ASYNC_USR_MASK)))
                        return (-EPERM);
index 6d0512e0f597233d2ad022df69068511ff74904a..f6e059693c6b5ac892b02c99b0c2e318cd29c547 100644 (file)
@@ -2199,7 +2199,7 @@ static int mxser_set_serial_info(struct mxser_struct *info,
 
        flags = info->flags & ASYNC_SPD_MASK;
 
-       if (!suser()) {
+       if (!capable(CAP_SYS_ADMIN)) {
                if ((new_serial.baud_base != info->baud_base) ||
                    (new_serial.close_delay != info->close_delay) ||
                    ((new_serial.flags & ~ASYNC_USR_MASK) !=
index 293008c70a730fd53e28430f4f8a8164ee6acc6d..6c7755bf2aaa9446deed5846539199a2da400e74 100644 (file)
@@ -702,7 +702,7 @@ static int rio_fw_ioctl (struct inode *inode, struct file *filp,
   func_enter();
 
   /* The "dev" argument isn't used. */
-  rc = -riocontrol (p, 0, cmd, (void *)arg, suser ());
+  rc = -riocontrol (p, 0, cmd, (void *)arg, capable(CAP_SYS_ADMIN));
 
   func_exit ();
   return rc;
index d6710f5b0294792cd3541fa34a5b1a77ce01a31c..6513edfc3045106a4b58b779dea9e72aaa935a0e 100644 (file)
@@ -1238,11 +1238,7 @@ static int set_config(struct r_port * info, struct rocket_config * new_info)
        if (copy_from_user(&new_serial, new_info, sizeof(new_serial)))
                return -EFAULT;
 
-#ifdef CAP_SYS_ADMIN
        if (!capable(CAP_SYS_ADMIN))
-#else
-       if (!suser())
-#endif
        {
                if ((new_serial.flags & ~ROCKET_USR_MASK) !=
                    (info->flags & ~ROCKET_USR_MASK))
index d194ff2eb09cfc1a0f875f29b99cb505f74db33f..3c47b68b2caae285555a170d6018affc5a15800d 100644 (file)
@@ -1472,7 +1472,7 @@ set_serial_info(struct cyclades_port * info,
            return -EFAULT;
     old_info = *info;
 
-    if (!suser()) {
+    if (!capable(CAP_SYS_ADMIN)) {
            if ((new_serial.close_delay != info->close_delay) ||
                ((new_serial.flags & ASYNC_FLAGS & ~ASYNC_USR_MASK) !=
                 (info->flags & ASYNC_FLAGS & ~ASYNC_USR_MASK)))
index f0321a828f5f3cf19993847b2884b6559ba706b9..aa8204da391c5a63cb948a695e15c809287eb1aa 100644 (file)
@@ -1370,7 +1370,7 @@ init_dev_done:
                retval = -ENODEV;
        filp->f_flags = saved_flags;
 
-       if (!retval && test_bit(TTY_EXCLUSIVE, &tty->flags) && !suser())
+       if (!retval && test_bit(TTY_EXCLUSIVE, &tty->flags) && !capable(CAP_SYS_ADMIN))
                retval = -EBUSY;
 
        if (retval) {
@@ -1472,7 +1472,7 @@ static int tiocsti(struct tty_struct *tty, char * arg)
 {
        char ch, mbz = 0;
 
-       if ((current->tty != tty) && !suser())
+       if ((current->tty != tty) && !capable(CAP_SYS_ADMIN))
                return -EPERM;
        if (get_user(ch, arg))
                return -EFAULT;
@@ -1510,7 +1510,7 @@ static int tioccons(struct inode *inode,
 {
        if (IS_SYSCONS_DEV(inode->i_rdev) ||
            IS_CONSOLE_DEV(inode->i_rdev)) {
-               if (!suser())
+               if (!capable(CAP_SYS_ADMIN))
                        return -EPERM;
                redirect = NULL;
                return 0;
@@ -1552,7 +1552,7 @@ static int tiocsctty(struct tty_struct *tty, int arg)
                 * This tty is already the controlling
                 * tty for another session group!
                 */
-               if ((arg == 1) && suser()) {
+               if ((arg == 1) && capable(CAP_SYS_ADMIN)) {
                        /*
                         * Steal it away
                         */
index 01a68557e759ef4271971178770659872c48a1cf..e59c0cef09e796ffa100523820ad90ec51dfceb9 100644 (file)
@@ -440,10 +440,10 @@ int vt_ioctl(struct tty_struct *tty, struct file * file,
 
        /*
         * To have permissions to do most of the vt ioctls, we either have
-        * to be the owner of the tty, or super-user.
+        * to be the owner of the tty, or have CAP_SYS_TTY_CONFIG.
         */
        perm = 0;
-       if (current->tty == tty || suser())
+       if (current->tty == tty || capable(CAP_SYS_TTY_CONFIG))
                perm = 1;
  
        kbd = kbd_table + console;
@@ -508,7 +508,7 @@ int vt_ioctl(struct tty_struct *tty, struct file * file,
        {
                struct kbd_repeat kbrep;
                
-               if (!capable(CAP_SYS_ADMIN))
+               if (!capable(CAP_SYS_TTY_CONFIG))
                        return -EPERM;
 
                if (copy_from_user(&kbrep, (void *)arg,
@@ -621,7 +621,7 @@ int vt_ioctl(struct tty_struct *tty, struct file * file,
 
        case KDGETKEYCODE:
        case KDSETKEYCODE:
-               if(!capable(CAP_SYS_ADMIN))
+               if(!capable(CAP_SYS_TTY_CONFIG))
                        perm=0;
                return do_kbkeycode_ioctl(cmd, (struct kbkeycode *)arg, perm);
 
@@ -1038,12 +1038,12 @@ int vt_ioctl(struct tty_struct *tty, struct file * file,
                return do_unimap_ioctl(cmd, (struct unimapdesc *)arg, perm);
 
        case VT_LOCKSWITCH:
-               if (!suser())
+               if (!capable(CAP_SYS_TTY_CONFIG))
                   return -EPERM;
                vt_dont_switch = 1;
                return 0;
        case VT_UNLOCKSWITCH:
-               if (!suser())
+               if (!capable(CAP_SYS_TTY_CONFIG))
                   return -EPERM;
                vt_dont_switch = 0;
                return 0;
index 6e33e94b9e6d1fd47ea8d18991c0cb3716bb98d7..931361d4abcd3d2c0f9d99f7ca296743f01ce468 100644 (file)
@@ -1291,11 +1291,7 @@ int zoran_ioctl(struct video_device* dev, unsigned int cmd, void *arg)
         case VIDIOCSFBUF:
         {
                struct video_buffer v;
-#if LINUX_VERSION_CODE >= 0x020100
-                       if(!capable(CAP_SYS_ADMIN) && !capable(CAP_SYS_ADMIN))
-#else
-                       if(!suser())
-#endif
+               if(!capable(CAP_SYS_ADMIN))
                        return -EPERM;
                if (copy_from_user(&v, arg,sizeof(v)))
                        return -EFAULT;
index d843e9e4ff3ee139bfa9db48633e5859693afc08..b03645385a26024cac15658ca35789ab2db8addf 100644 (file)
@@ -830,7 +830,7 @@ static int ds_ioctl(struct inode * inode, struct file * file,
        err = unbind_request(i, &buf.bind_info);
        break;
     case DS_BIND_MTD:
-       if (!suser()) return -EPERM;
+       if (!capable(CAP_SYS_ADMIN)) return -EPERM;
        err = bind_mtd(i, &buf.mtd_info);
        break;
     default:
index 0c25126efe507932b53a2d22f43451852ada252f..7d65030b89e6430e9fc12bcdfe6d56ca0497fe92 100644 (file)
@@ -561,7 +561,7 @@ tty3270_write_proc(struct file *file, const char *buffer,
        /*
         * Superuser-mode settings affect the driver overall ---
         */
-       if (!suser()) {
+       if (!capable(CAP_SYS_TTY_CONFIG)) {
                return -EPERM;
        } else if (strncmp(mybuf, "index=", 6) == 0) {
                tty3270_proc_index = simple_strtoul(mybuf + 6, 0,0);
index 3308618e4c5c191fb0a3be4773331a03ec411e88..e6f03847c2121efbecf13d1c58e0f0973064129a 100644 (file)
@@ -532,7 +532,7 @@ int cpqfcTS_ioctl( Scsi_Device *ScsiDev, int Cmnd, void *arg)
 
        // must be super user to send stuff directly to the
        // controller and/or physical drives...
-       if( !capable(CAP_SYS_ADMIN) )
+       if( !capable(CAP_SYS_RAWIO) )
          return -EPERM;
 
        // copy the caller's struct to our space.
index da0015f2246208f18eff32c777d700054b78c9e3..5f7102461577ddad3fb4443fc442c2e94d55ba63 100644 (file)
@@ -288,7 +288,7 @@ unsigned ufs_new_fragments (struct inode * inode, u32 * p, unsigned fragment,
        /*
         * There is not enough space for user on the device
         */
-       if (!fsuser() && ufs_freespace(usb1, UFS_MINFREE) <= 0) {
+       if (!capable(CAP_SYS_RESOURCE) && ufs_freespace(usb1, UFS_MINFREE) <= 0) {
                unlock_super (sb);
                UFSD(("EXIT (FAILED)\n"))
                return 0;