Commit 052abf9a authored by Jori Koolstra's avatar Jori Koolstra Committed by Vasily Gorbik
Browse files

s390/hmcdrv: Remove commented out code

The create_class() api is retiring in favor of class_register() (see:
https://lore.kernel.org/all/2023040244-duffel-pushpin-f738@gregkh/

).
The HMCDRV_DEV_CLASS define is hiding a use of create_class(), but it is
permanently disabled as it is commented out. To avoid supporting code
that is disabled, the suggestion is to remove all code hiding be behind
any #ifdef HMCDRV_DEV_CLASS.

Suggested-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarJori Koolstra <jkoolstra@xs4all.nl>
Reviewed-by: default avatarHeiko Carstens <hca@linux.ibm.com>
Acked-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Link: https://lore.kernel.org/r/20260308103255.757461-1-jkoolstra@xs4all.nl


Signed-off-by: default avatarVasily Gorbik <gor@linux.ibm.com>
parent 2a0a1db5
Loading
Loading
Loading
Loading
+1 −113
Original line number Diff line number Diff line
@@ -30,26 +30,12 @@
#include "hmcdrv_dev.h"
#include "hmcdrv_ftp.h"

/* If the following macro is defined, then the HMC device creates it's own
 * separated device class (and dynamically assigns a major number). If not
 * defined then the HMC device is assigned to the "misc" class devices.
 *
#define HMCDRV_DEV_CLASS "hmcftp"
 */

#define HMCDRV_DEV_NAME  "hmcdrv"
#define HMCDRV_DEV_BUSY_DELAY	 500 /* delay between -EBUSY trials in ms */
#define HMCDRV_DEV_BUSY_RETRIES  3   /* number of retries on -EBUSY */

struct hmcdrv_dev_node {

#ifdef HMCDRV_DEV_CLASS
	struct cdev dev; /* character device structure */
	umode_t mode;	 /* mode of device node (unused, zero) */
#else
	struct miscdevice dev; /* "misc" device structure */
#endif

};

static int hmcdrv_dev_open(struct inode *inode, struct file *fp);
@@ -75,38 +61,6 @@ static const struct file_operations hmcdrv_dev_fops = {

static struct hmcdrv_dev_node hmcdrv_dev; /* HMC device struct (static) */

#ifdef HMCDRV_DEV_CLASS

static struct class *hmcdrv_dev_class; /* device class pointer */
static dev_t hmcdrv_dev_no; /* device number (major/minor) */

/**
 * hmcdrv_dev_name() - provides a naming hint for a device node in /dev
 * @dev: device for which the naming/mode hint is
 * @mode: file mode for device node created in /dev
 *
 * See: devtmpfs.c, function devtmpfs_create_node()
 *
 * Return: recommended device file name in /dev
 */
static char *hmcdrv_dev_name(const struct device *dev, umode_t *mode)
{
	char *nodename = NULL;
	const char *devname = dev_name(dev); /* kernel device name */

	if (devname)
		nodename = kasprintf(GFP_KERNEL, "%s", devname);

	/* on device destroy (rmmod) the mode pointer may be NULL
	 */
	if (mode)
		*mode = hmcdrv_dev.mode;

	return nodename;
}

#endif	/* HMCDRV_DEV_CLASS */

/*
 * open()
 */
@@ -276,67 +230,11 @@ static ssize_t hmcdrv_dev_write(struct file *fp, const char __user *ubuf,
 */
int hmcdrv_dev_init(void)
{
	int rc;

#ifdef HMCDRV_DEV_CLASS
	struct device *dev;

	rc = alloc_chrdev_region(&hmcdrv_dev_no, 0, 1, HMCDRV_DEV_NAME);

	if (rc)
		goto out_err;

	cdev_init(&hmcdrv_dev.dev, &hmcdrv_dev_fops);
	hmcdrv_dev.dev.owner = THIS_MODULE;
	rc = cdev_add(&hmcdrv_dev.dev, hmcdrv_dev_no, 1);

	if (rc)
		goto out_unreg;

	/* At this point the character device exists in the kernel (see
	 * /proc/devices), but not under /dev nor /sys/devices/virtual. So
	 * we have to create an associated class (see /sys/class).
	 */
	hmcdrv_dev_class = class_create(HMCDRV_DEV_CLASS);

	if (IS_ERR(hmcdrv_dev_class)) {
		rc = PTR_ERR(hmcdrv_dev_class);
		goto out_devdel;
	}

	/* Finally a device node in /dev has to be established (as 'mkdev'
	 * does from the command line). Notice that assignment of a device
	 * node name/mode function is optional (only for mode != 0600).
	 */
	hmcdrv_dev.mode = 0; /* "unset" */
	hmcdrv_dev_class->devnode = hmcdrv_dev_name;

	dev = device_create(hmcdrv_dev_class, NULL, hmcdrv_dev_no, NULL,
			    "%s", HMCDRV_DEV_NAME);
	if (!IS_ERR(dev))
		return 0;

	rc = PTR_ERR(dev);
	class_destroy(hmcdrv_dev_class);
	hmcdrv_dev_class = NULL;

out_devdel:
	cdev_del(&hmcdrv_dev.dev);

out_unreg:
	unregister_chrdev_region(hmcdrv_dev_no, 1);

out_err:

#else  /* !HMCDRV_DEV_CLASS */
	hmcdrv_dev.dev.minor = MISC_DYNAMIC_MINOR;
	hmcdrv_dev.dev.name = HMCDRV_DEV_NAME;
	hmcdrv_dev.dev.fops = &hmcdrv_dev_fops;
	hmcdrv_dev.dev.mode = 0; /* finally produces 0600 */
	rc = misc_register(&hmcdrv_dev.dev);
#endif	/* HMCDRV_DEV_CLASS */

	return rc;
	return misc_register(&hmcdrv_dev.dev);
}

/**
@@ -344,15 +242,5 @@ int hmcdrv_dev_init(void)
 */
void hmcdrv_dev_exit(void)
{
#ifdef HMCDRV_DEV_CLASS
	if (!IS_ERR_OR_NULL(hmcdrv_dev_class)) {
		device_destroy(hmcdrv_dev_class, hmcdrv_dev_no);
		class_destroy(hmcdrv_dev_class);
	}

	cdev_del(&hmcdrv_dev.dev);
	unregister_chrdev_region(hmcdrv_dev_no, 1);
#else  /* !HMCDRV_DEV_CLASS */
	misc_deregister(&hmcdrv_dev.dev);
#endif	/* HMCDRV_DEV_CLASS */
}