X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=libcfs%2Flibcfs%2Flinux%2Flinux-module.c;h=f98ba6463b20dbbff7a9cb1e705a9ce14438ebe0;hb=e92b9f84c11f6298401a0e73b09cf36a982f4fbe;hp=6f21853bfc387be7438b722a64433785fa6fe93f;hpb=e1b3d71a27c166bebd26ab33f7299c41bd75dab5;p=fs%2Flustre-release.git diff --git a/libcfs/libcfs/linux/linux-module.c b/libcfs/libcfs/linux/linux-module.c index 6f21853..f98ba64 100644 --- a/libcfs/libcfs/linux/linux-module.c +++ b/libcfs/libcfs/linux/linux-module.c @@ -1,7 +1,42 @@ +/* + * GPL HEADER START + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 only, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License version 2 for more details (a copy is included + * in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU General Public License + * version 2 along with this program; If not, see + * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + * GPL HEADER END + */ +/* + * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. + * Use is subject to license terms. + * + * Copyright (c) 2012, Intel Corporation. + */ +/* + * This file is part of Lustre, http://www.lustre.org/ + * Lustre is a trademark of Sun Microsystems, Inc. + */ + #define DEBUG_SUBSYSTEM S_LNET #include -#include #define LNET_MINOR 240 @@ -49,7 +84,7 @@ int libcfs_ioctl_getdata(char *buf, char *end, void *arg) if (data->ioc_inllen2) data->ioc_inlbuf2 = &data->ioc_bulk[0] + - size_round(data->ioc_inllen1); + cfs_size_round(data->ioc_inllen1); RETURN(0); } @@ -96,14 +131,13 @@ libcfs_psdev_release(struct inode * inode, struct file * file) return rc; } -static int -libcfs_ioctl(struct inode *inode, struct file *file, - unsigned int cmd, unsigned long arg) +static long libcfs_ioctl(struct file *file, + unsigned int cmd, unsigned long arg) { struct cfs_psdev_file pfile; int rc = 0; - if (current->fsuid != 0) + if (!capable(CAP_SYS_ADMIN)) return -EACCES; if ( _IOC_TYPE(cmd) != IOC_LIBCFS_TYPE || @@ -117,12 +151,12 @@ libcfs_ioctl(struct inode *inode, struct file *file, /* Handle platform-dependent IOC requests */ switch (cmd) { case IOC_LIBCFS_PANIC: - if (!capable (CAP_SYS_BOOT)) + if (!cfs_capable(CFS_CAP_SYS_BOOT)) return (-EPERM); panic("debugctl-invoked panic"); return (0); case IOC_LIBCFS_MEMHOG: - if (!capable (CAP_SYS_ADMIN)) + if (!cfs_capable(CFS_CAP_SYS_ADMIN)) return -EPERM; /* go thought */ } @@ -137,15 +171,13 @@ libcfs_ioctl(struct inode *inode, struct file *file, } static struct file_operations libcfs_fops = { - ioctl: libcfs_ioctl, - open: libcfs_psdev_open, - release: libcfs_psdev_release + unlocked_ioctl: libcfs_ioctl, + open : libcfs_psdev_open, + release : libcfs_psdev_release }; -cfs_psdev_t libcfs_dev = { +struct miscdevice libcfs_dev = { LNET_MINOR, "lnet", &libcfs_fops }; - -