From: Dan Carpenter <dan.carpenter@oracle.com>
To: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Cc: Benjamin Romer <benjamin.romer@unisys.com>,
David Kershner <david.kershner@unisys.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
devel@driverdev.osuosl.org, sparmaintainer@unisys.com,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH] staging: unisys: handle major number properly
Date: Tue, 24 Mar 2015 11:32:47 +0300 [thread overview]
Message-ID: <20150324083247.GP10964@mwanda> (raw)
In-Reply-To: <1426604484-7770-1-git-send-email-sudipm.mukherjee@gmail.com>
This patch also doesn't introduce bugs but it's sort of whacky and hard
to understand. Also the subject and description imply or say "fix" but
it's just a cleanup. The original code was also proper but just messy.
On Tue, Mar 17, 2015 at 08:31:24PM +0530, Sudip Mukherjee wrote:
> fixed the handling of dev_t and the major number.
> now the major and minor number is passed to the init function.
> similarly in the cleanup function dev_t is passed to unregister it.
>
> Signed-off-by: Sudip Mukherjee <sudip@vectorindia.org>
> ---
> drivers/staging/unisys/visorchipset/file.c | 18 ++++++++----------
> drivers/staging/unisys/visorchipset/file.h | 4 ++--
> .../staging/unisys/visorchipset/visorchipset_main.c | 10 +++-------
> 3 files changed, 13 insertions(+), 19 deletions(-)
>
> diff --git a/drivers/staging/unisys/visorchipset/file.c b/drivers/staging/unisys/visorchipset/file.c
> index 9ca7f1e..224e214 100644
> --- a/drivers/staging/unisys/visorchipset/file.c
> +++ b/drivers/staging/unisys/visorchipset/file.c
> @@ -30,7 +30,6 @@
>
> static struct cdev file_cdev;
> static struct visorchannel **file_controlvm_channel;
> -static dev_t majordev = -1; /**< indicates major num for device */
> static BOOL registered = FALSE;
>
> static int visorchipset_open(struct inode *inode, struct file *file);
> @@ -50,15 +49,17 @@ static const struct file_operations visorchipset_fops = {
> };
>
> int
> -visorchipset_file_init(dev_t major_dev, struct visorchannel **controlvm_channel)
> +visorchipset_file_init(int major, int minor,
> + struct visorchannel **controlvm_channel)
Pass the dev_t majordev;
1) Then it's consistent with visorchipset_file_cleanup()
2) You need majordev anyway.
Don't save majordev as a global because globals are bad and you already
have a copy in Visorchipset_platform_device.dev.devt.
> {
> int rc = 0;
> + dev_t majordev;
>
> file_controlvm_channel = controlvm_channel;
> - majordev = major_dev;
> cdev_init(&file_cdev, &visorchipset_fops);
> file_cdev.owner = THIS_MODULE;
> - if (MAJOR(majordev) == 0) {
> + majordev = MKDEV(major, minor);
> + if (major == 0) {
> /* dynamic major device number registration required */
> if (alloc_chrdev_region(&majordev, 0, 1, MYDRVNAME) < 0)
> return -1;
> @@ -69,23 +70,20 @@ visorchipset_file_init(dev_t major_dev, struct visorchannel **controlvm_channel)
> return -1;
> registered = TRUE;
> }
> - rc = cdev_add(&file_cdev, MKDEV(MAJOR(majordev), 0), 1);
> + rc = cdev_add(&file_cdev, MKDEV(major, 0), 1);
This should just be:
rc = cdev_add(&file_cdev, majordev, 1);
So here is my suggestion:
[patch 1] delete dead code I mentioned in my previous email.
This deletes "registered" and the (MAJOR(majordev) >= 0) check.
[patch 2] pass majordev to visorchipset_file_cleanup()
This lets you delete the "majordev" global.
[patch 3] small cleanup in visorchipset_file_init()
- rc = cdev_add(&file_cdev, MKDEV(MAJOR(majordev), 0), 1);
+ rc = cdev_add(&file_cdev, majordev, 1);
There are several other ways you could break it up but do something like
that.
regards,
dan carpenter
next prev parent reply other threads:[~2015-03-24 8:32 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-17 15:01 [PATCH] staging: unisys: handle major number properly Sudip Mukherjee
2015-03-23 21:04 ` Greg Kroah-Hartman
2015-03-24 5:36 ` Sudip Mukherjee
2015-03-24 8:32 ` Dan Carpenter [this message]
2015-03-24 8:43 ` Sudip Mukherjee
2015-03-24 8:57 ` Dan Carpenter
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150324083247.GP10964@mwanda \
--to=dan.carpenter@oracle.com \
--cc=benjamin.romer@unisys.com \
--cc=david.kershner@unisys.com \
--cc=devel@driverdev.osuosl.org \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=sparmaintainer@unisys.com \
--cc=sudipm.mukherjee@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.