OSDN Git Service

staging: unisys: remove all proc entries from virtpci
authorErik Arfvidson <erik.arfvidson@unisys.com>
Tue, 8 Jul 2014 17:21:30 +0000 (13:21 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 8 Jul 2014 22:39:30 +0000 (15:39 -0700)
This patch removes all proc entries from virtpci

Signed-off-by: Erik Arfvidson <erik.arfvidson@unisys.com>
Signed-off-by: Benjamin Romer <benjamin.romer@unisys.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/unisys/virtpci/virtpci.c

index 5ab17e7..7d840b0 100644 (file)
@@ -34,7 +34,6 @@
 #include <linux/list.h>
 #include <linux/slab.h>
 #include <linux/mod_devicetable.h>
-#include <linux/proc_fs.h>
 #include <linux/if_ether.h>
 #include <linux/version.h>
 #include "version.h"
@@ -100,18 +99,7 @@ static int virtpci_device_suspend(struct device *dev, pm_message_t state);
 static int virtpci_device_resume(struct device *dev);
 static int virtpci_device_probe(struct device *dev);
 static int virtpci_device_remove(struct device *dev);
-static ssize_t virt_proc_write(struct file *file, const char __user *buffer,
-                              size_t count, loff_t *ppos);
-static ssize_t info_proc_read(struct file *file, char __user *buf,
-                             size_t len, loff_t *offset);
 
-static const struct file_operations proc_virt_fops = {
-       .write = virt_proc_write,
-};
-
-static const struct file_operations proc_info_fops = {
-       .read = info_proc_read,
-};
 
 /*****************************************************/
 /* Globals                                           */
@@ -152,19 +140,6 @@ static DEFINE_RWLOCK(VpcidevListLock);
 /* filled in with info about this driver, wrt it servicing client busses */
 static ULTRA_VBUS_DEVICEINFO Bus_DriverInfo;
 
-/* virtpci_proc_dir_entry is used to create the proc entry directory
- * for virtpci
- */
-static struct proc_dir_entry *virtpci_proc_dir;
-/* virt_proc_entry is used to tell virtpci to add/delete vhbas/vnics/vbuses */
-static struct proc_dir_entry *virt_proc_entry;
-/* info_proc_entry is used to tell virtpci to display current info
- * kept in the driver
- */
-static struct proc_dir_entry *info_proc_entry;
-#define VIRT_PROC_ENTRY_FN "virt"
-#define INFO_PROC_ENTRY_FN "info"
-#define DIR_PROC_ENTRY "virtpci"
 
 struct virtpci_busdev {
        struct device virtpci_bus_device;
@@ -1402,274 +1377,6 @@ void virtpci_unregister_driver(struct virtpci_driver *drv)
 EXPORT_SYMBOL_GPL(virtpci_unregister_driver);
 
 /*****************************************************/
-/* proc filesystem functions                                            */
-/*****************************************************/
-struct print_vbus_info {
-       int *length;
-       char *buf;
-};
-
-static int print_vbus(struct device *vbus, void *data)
-{
-       struct print_vbus_info *p = (struct print_vbus_info *) data;
-       int l = *(p->length);
-
-       *(p->length) = l + sprintf(p->buf + l, "bus_id:%s\n", dev_name(vbus));
-       return 0;               /* no error */
-}
-
-static ssize_t info_proc_read(struct file *file, char __user *buf,
-                             size_t len, loff_t *offset)
-{
-       int length = 0;
-       struct virtpci_dev *tmpvpcidev;
-       unsigned long flags;
-       struct print_vbus_info printparam;
-       char *vbuf;
-       loff_t pos = *offset;
-
-       if (pos < 0)
-               return -EINVAL;
-
-       if (pos > 0 || !len)
-               return 0;
-
-       vbuf = kzalloc(len, GFP_KERNEL);
-       if (!vbuf)
-               return -ENOMEM;
-
-       length += sprintf(vbuf + length, "CHANSOCK is not defined.\n");
-
-       length += sprintf(vbuf + length, "\n Virtual PCI Bus devices\n");
-       printparam.length = &length;
-       printparam.buf = vbuf;
-       if (bus_for_each_dev(&virtpci_bus_type, NULL,
-                            (void *) &printparam, print_vbus))
-               LOGERR("delete of all vbus failed\n");
-
-       length += sprintf(vbuf + length, "\n Virtual PCI devices\n");
-       read_lock_irqsave(&VpcidevListLock, flags);
-       tmpvpcidev = VpcidevListHead;
-       while (tmpvpcidev) {
-               if (tmpvpcidev->devtype == VIRTHBA_TYPE) {
-                       length += sprintf(vbuf + length, "[%d:%d] VHba:%08x:%08x max-config:%d-%d-%d-%d",
-                                   tmpvpcidev->busNo, tmpvpcidev->deviceNo,
-                                   tmpvpcidev->scsi.wwnn.wwnn1,
-                                   tmpvpcidev->scsi.wwnn.wwnn2,
-                                   tmpvpcidev->scsi.max.max_channel,
-                                   tmpvpcidev->scsi.max.max_id,
-                                   tmpvpcidev->scsi.max.max_lun,
-                                   tmpvpcidev->scsi.max.cmd_per_lun);
-               } else {
-                       length += sprintf(vbuf + length, "[%d:%d] VNic:%02x:%02x:%02x:%02x:%02x:%02x num_rcv_bufs:%d mtu:%d",
-                                   tmpvpcidev->busNo, tmpvpcidev->deviceNo,
-                                   tmpvpcidev->net.mac_addr[0],
-                                   tmpvpcidev->net.mac_addr[1],
-                                   tmpvpcidev->net.mac_addr[2],
-                                   tmpvpcidev->net.mac_addr[3],
-                                   tmpvpcidev->net.mac_addr[4],
-                                   tmpvpcidev->net.mac_addr[5],
-                                   tmpvpcidev->net.num_rcv_bufs,
-                                   tmpvpcidev->net.mtu);
-               }
-               length +=
-                   sprintf(vbuf + length, " chanptr:%p\n",
-                           tmpvpcidev->queueinfo.chan);
-               tmpvpcidev = tmpvpcidev->next;
-       }
-       read_unlock_irqrestore(&VpcidevListLock, flags);
-
-       length += sprintf(vbuf + length, "\n");
-       if (copy_to_user(buf, vbuf, length)) {
-               kfree(vbuf);
-               return -EFAULT;
-       }
-
-       kfree(vbuf);
-       *offset += length;
-       return length;
-}
-
-static ssize_t virt_proc_write(struct file *file, const char __user *buffer,
-                              size_t count, loff_t *ppos)
-{
-       char buf[16];
-       int type, i, action = 0xffff;
-       unsigned int busno, deviceno;
-       void __iomem *chanptr;
-       struct add_vbus_guestpart busaddparams;
-       struct add_virt_guestpart addparams;
-       struct del_vbus_guestpart busdelparams;
-       struct del_virt_guestpart delparams;
-#ifdef STORAGE_CHANNEL
-       U64 storagechannel;
-#endif
-
-#define PRINT_USAGE_RETURN {\
-       LOGERR("usage: 0-0-<chanptr>                                    ==> delete vhba\n"); \
-       LOGERR("usage: 0-1-<chanptr>-<busNo>-<deviceNo> ==> add vhba\n"); \
-       LOGERR("usage: 0-f-<busNo>                                              ==> delete all vhbas\n"); \
-       LOGERR("\n"); \
-       LOGERR("usage: 1-0-<chanptr>                                    ==> delete vnic\n"); \
-       LOGERR("usage: 1-1-<chanptr>-<busNo>-<deviceNo> ==> add vnic\n"); \
-       LOGERR("usage: 1-f-<busNo>                                              ==> delete all vnics\n"); \
-       LOGERR("\n"); \
-       LOGERR("usage: 6-0-<busNo>                                              ==> delete vbus\n"); \
-       LOGERR("usage: 6-1-<busNo>                                              ==> add vbus\n"); \
-       LOGERR("usage: 6-f                                                              ==> delete all vbuses\n"); \
-       LOGERR("usage: 98-<busNo>-<deviceNo>                    ==> INJECT Client delete vnic\n"); \
-       LOGERR("usage: 99-<chanptr>-<busNo>-<deviceNo>  ==> INJECT Client add vnic\n"); \
-       return -EINVAL; \
-}
-
-       if (count >= ARRAY_SIZE(buf))
-               return -EINVAL;
-
-       if (copy_from_user(buf, buffer, count)) {
-               LOGERR("copy_from_user failed.\n");
-               return -EFAULT;
-       }
-
-       i = sscanf(buf, "%x-%x", &type, &action);
-       if (i < 2)
-               PRINT_USAGE_RETURN;
-
-       if (type == 0x98) {
-               /* client inject delete vnic */
-               i = sscanf(buf, "%x-%d-%d", &type, &busno, &deviceno);
-               if (i != 3)
-                       PRINT_USAGE_RETURN;
-               uislib_client_inject_del_vnic(busno, deviceno);
-               return count;   /* success */
-       } else if (type == 0x99) {
-               /* client inject add vnic */
-               i = sscanf(buf, "%x-%p-%d-%d", &type, &chanptr, &busno,
-                          &deviceno);
-               if (i != 4)
-                       PRINT_USAGE_RETURN;
-               if (!uislib_client_inject_add_vnic(busno, deviceno,
-                                                  __pa(chanptr),
-                                                  MIN_IO_CHANNEL_SIZE,
-                                                  1, /* test msg */
-                                                  NULL_UUID_LE, /* inst guid */
-                                                  NULL)) { /*interrupt info */
-                       LOGERR("FAILED to inject add vnic\n");
-                       return -EFAULT;
-               }
-               return count;   /* success */
-       }
-
-       if ((type != VIRTHBA_TYPE) && (type != VIRTNIC_TYPE)
-           && (type != VIRTBUS_TYPE))
-               PRINT_USAGE_RETURN;
-
-       if (type == VIRTBUS_TYPE) {
-               i = sscanf(buf, "%x-%x-%d", &type, &action, &busno);
-               switch (action) {
-               case 0:
-                       /* delete vbus */
-                       if (i != 3)
-                               break;
-                       busdelparams.busNo = busno;
-                       if (delete_vbus(&busdelparams))
-                               return count;   /* success */
-                       return -EFAULT;
-
-               case 1:
-                       /* add vbus */
-                       if (i != 3)
-                               break;
-                       busaddparams.chanptr = NULL;    /* NOT YET USED */
-                       busaddparams.busNo = busno;
-                       if (add_vbus(&busaddparams))
-                               return count;   /* success */
-                       return -EFAULT;
-
-               case 0xf:
-                       /* delete all vbuses and all vhbas/vnics on the buses */
-                       if (i != 2)
-                               break;
-                       delete_all();
-                       return count;   /* success */
-               default:
-                       break;
-               }
-               PRINT_USAGE_RETURN;
-       }
-
-       /* if (type == VIRTNIC_TYPE) or         if (type == VIRTHBA_TYPE) */
-       switch (action) {
-       case 0:
-               /* delete vhba/vnic */
-               i = sscanf(buf, "%x-%x-%p", &type, &action, &chanptr);
-               if (i != 3)
-                       break;
-               delparams.chanptr = chanptr;
-               if (type == VIRTHBA_TYPE) {
-                       if (delete_vhba(&delparams))
-                               return count;   /* success */
-               } else {
-                       if (delete_vnic(&delparams))
-                               return count;   /* success */
-               }
-               return -EFAULT;
-
-       case 1:
-               /* add vhba/vnic */
-               i = sscanf(buf, "%x-%x-%p-%d-%d", &type, &action, &chanptr,
-                          &busno, &deviceno);
-               if (i != 5)
-                       break;
-               addparams.chanptr = chanptr;
-               addparams.busNo = busno;
-               addparams.deviceNo = deviceno;
-               if (type == VIRTHBA_TYPE) {
-                       if (add_vhba(&addparams))
-                               return count;   /* success */
-               } else {
-                       if (add_vnic(&addparams))
-                               return count;   /* success */
-               }
-               return -EFAULT;
-
-#ifdef STORAGE_CHANNEL
-       case 2:
-               /* add vhba */
-               i = sscanf(buf, "%x-%x-%d-%d", &type, &action, &busno,
-                          &deviceno);
-               if (i != 4)
-                       break;
-               storagechannel = uislib_storage_channel(0);     /* Get my storage channel */
-               /* ioremap_cache it now */
-               addparams.chanptr =
-                   (void *) ioremap_cache(storagechannel, IO_CHANNEL_SIZE);
-               if (addparams.chanptr == NULL) {
-                       LOGERR("Failure to get remap storage channel.\n");
-                       return -EFAULT;
-               }
-               addparams.busNo = busno;
-               addparams.deviceNo = deviceno;
-               if (type == VIRTHBA_TYPE) {
-                       if (add_vhba(&addparams))
-                               return count;   /* success */
-               }
-               return -EFAULT;
-#endif
-       case 0xf:
-               /* delete all vhbas/vnics */
-               i = sscanf(buf, "%x-%x-%d", &type, &action, &busno);
-               if (i != 3)
-                       break;
-               busdelparams.busNo = busno;
-               delete_all_virt(type, &busdelparams);
-               return count;   /* success */
-       default:
-               break;
-       }
-       PRINT_USAGE_RETURN;
-}
-
-/*****************************************************/
 /* Module Init & Exit functions                      */
 /*****************************************************/
 
@@ -1719,12 +1426,7 @@ static int __init virtpci_mod_init(void)
 
        LOGINF("successfully registered virtpci_ctrlchan_func (0x%p) as callback.\n",
             (void *) &virtpci_ctrlchan_func);
-       /* create the proc directories */
-       virtpci_proc_dir = proc_mkdir(DIR_PROC_ENTRY, NULL);
-       virt_proc_entry = proc_create(VIRT_PROC_ENTRY_FN, 0, virtpci_proc_dir,
-                                     &proc_virt_fops);
-       info_proc_entry = proc_create(INFO_PROC_ENTRY_FN, 0, virtpci_proc_dir,
-                                     &proc_info_fops);
+
        LOGINF("Leaving\n");
        POSTCODE_LINUX_2(VPCI_CREATE_EXIT_PC, POSTCODE_SEVERITY_INFO);
        return 0;
@@ -1741,15 +1443,6 @@ static void __exit virtpci_mod_exit(void)
        device_unregister(&virtpci_rootbus_device);
        bus_unregister(&virtpci_bus_type);
 
-       if (virt_proc_entry)
-               remove_proc_entry(VIRT_PROC_ENTRY_FN, virtpci_proc_dir);
-
-       if (info_proc_entry)
-               remove_proc_entry(INFO_PROC_ENTRY_FN, virtpci_proc_dir);
-
-       if (virtpci_proc_dir)
-               remove_proc_entry(DIR_PROC_ENTRY, NULL);
-
        LOGINF("Leaving\n");
 
 }