From: "Stephen Neuendorffer" <stephen.neuendorffer@xilinx.com>
To: "Jiri Slaby" <jirislaby@gmail.com>,
"Grant Likely" <grant.likely@secretlab.ca>
Cc: "Linux Kernel Mailing List" <linux-kernel@vger.kernel.org>,
"Andrew Morton" <akpm@linux-foundation.org>
Subject: RE: Xilinx: hwicap driver comments
Date: Thu, 7 Feb 2008 14:31:47 -0800 [thread overview]
Message-ID: <20080207223148.D0757DD807E@mail15-dub.bigfish.com> (raw)
In-Reply-To: <47AB6552.7040503@gmail.com>
> -----Original Message-----
> From: Jiri Slaby [mailto:jirislaby@gmail.com]
> Sent: Thursday, February 07, 2008 12:09 PM
> To: Stephen Neuendorffer; Grant Likely
> Cc: Linux Kernel Mailing List; Andrew Morton
> Subject: Xilinx: hwicap driver comments
>
> Hi,
>
> first of all, I think that the driver should go through lkml before
upstream
> merge or at least be in -mm for a while (I think this used to be a
rule some
> time ago), correct me if I'm wrong, but none of it happened.
>
> Few comments I have:
> - release f_op retval is silently ignored, I guess you will get your
device into
> undefined state when the first function fails (esp. when you interrupt
the sem)
Hmm.. hadn't realized that. I'm open to suggestions on how to do this
better. The real reason why the synchronization is there is to make
sure that only one client is using the device at a time, using the
is_open flag.
> - semaphores are deprecated
> - class_device_create is deprecated
What is preferred?
> - module_init/exit functions should be __init, not __devinit/exit (not
a bug,
> it's subset)
> - this piece:
> drvdata = kmalloc(sizeof(struct hwicap_drvdata), GFP_KERNEL);
> if (!drvdata) {
> dev_err(dev, "Couldn't allocate device private
record\n");
> return -ENOMEM;
> }
> memset((void *)drvdata, 0, sizeof(struct hwicap_drvdata));
>
> kmalloc + memset = kzalloc
> null probed_devices[id] on that fail path and on failed1 label
>
> - from/to (void *) casts are useless
> - io resources are at least ulong
easily fixed.
> - don't understand this:
> memcpy(kbuf, drvdata->read_buffer, bytes_remaining);
> drvdata->read_buffer_in_use = bytes_remaining;
> free_page((unsigned long)kbuf);
The physical device only generates/accepts complete words, the intention
is to account for the possibility that a read does not read complete
words, and to fulfill the read whenever possible.
It's arguable that read() and write() should not accept or return
partial words, I suppose
> - can this overlap (=>memmove)?
> memcpy(drvdata->read_buffer + bytes_to_read,
> drvdata->read_buffer, 4 -
bytes_to_read);
> - is platform probing function race-proof (like pci)?
no idea. even if it is, it's unlikely that the of_driver probing is
protected by the same lock as the platform_driver probing.
> - run sparse on it, you mix __user with non-__user at least
I thought I had been.... hmm... looks like a few other things to fix
there, too.
Steve
next prev parent reply other threads:[~2008-02-07 22:32 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-02-07 20:08 Jiri Slaby
2008-02-07 20:34 ` Grant Likely
2008-02-07 21:10 ` Stephen Neuendorffer
2008-02-07 20:42 ` Andrew Morton
2008-02-07 20:54 ` Grant Likely
2008-02-07 21:21 ` Andrew Morton
2008-02-07 21:31 ` Grant Likely
2008-02-07 21:35 ` Stephen Neuendorffer
2008-02-07 21:53 ` Andrew Morton
2008-02-07 22:00 ` Stephen Neuendorffer
2008-02-07 21:40 ` Linus Torvalds
2008-02-07 21:25 ` Benjamin Herrenschmidt
2008-02-07 21:35 ` Josh Boyer
2008-02-07 22:11 ` Andrew Morton
2008-02-07 22:58 ` Josh Boyer
2008-02-07 21:17 ` Benjamin Herrenschmidt
2008-02-07 21:28 ` Jiri Slaby
2008-02-07 21:33 ` Benjamin Herrenschmidt
2008-02-07 21:35 ` Grant Likely
2008-02-07 22:31 ` Stephen Neuendorffer [this message]
2008-02-07 22:39 ` Jiri Slaby
2008-02-08 2:17 ` [PATCH] [POWERPC] Xilinx: hwicap driver Stephen Neuendorffer
2008-02-08 9:10 ` Jiri Slaby
2008-02-08 16:49 ` Randy Dunlap
2008-02-08 17:08 ` Xilinx: hwicap driver comments Stephen Neuendorffer
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=20080207223148.D0757DD807E@mail15-dub.bigfish.com \
--to=stephen.neuendorffer@xilinx.com \
--cc=akpm@linux-foundation.org \
--cc=grant.likely@secretlab.ca \
--cc=jirislaby@gmail.com \
--cc=linux-kernel@vger.kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome