From: Pekka Enberg <penberg@gmail.com>
To: "Bouchard, Sebastien" <Sebastien.Bouchard@ca.kontron.com>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"Lorenzini, Mario" <mario.lorenzini@ca.kontron.com>,
Pekka Enberg <penberg@cs.helsinki.fi>
Subject: Re: Patch of a new driver for kernel 2.4.x that need review
Date: Wed, 22 Jun 2005 22:43:40 +0300 [thread overview]
Message-ID: <84144f020506221243163d06a2@mail.gmail.com> (raw)
In-Reply-To: <5009AD9521A8D41198EE00805F85F18F067F6A36@sembo111.teknor.com>
Hi,
Some comments below. Please note that I am more familiar with 2.6 so
some of these might not apply.
Pekka
On 6/22/05, Bouchard, Sebastien <Sebastien.Bouchard@ca.kontron.com> wrote:
> --- 2.4.31-ori/drivers/char/tlclk.c Wed Dec 31 19:00:00 1969
> +++ 2.4.31-mod/drivers/char/tlclk.c Wed Jun 22 09:43:10 2005
> +/* Telecom clock I/O register definition */
> +#define TLCLK_BASE 0xa08
> +#define TLCLK_REG0 TLCLK_BASE
> +#define TLCLK_REG1 TLCLK_BASE+1
> +#define TLCLK_REG2 TLCLK_BASE+2
> +#define TLCLK_REG3 TLCLK_BASE+3
> +#define TLCLK_REG4 TLCLK_BASE+4
> +#define TLCLK_REG5 TLCLK_BASE+5
> +#define TLCLK_REG6 TLCLK_BASE+6
> +#define TLCLK_REG7 TLCLK_BASE+7
Please use enums instead.
> +/*
> +* Function : Module I/O functions
> +* Description : Almost all the control stuff is done here, check I/O dn
> for help.
> +*/
Please use kerneldoc format.
> +static struct file_operations tlclk_fops = {
> + read:tlclk_read,
> + write:tlclk_write,
> + ioctl:tlclk_ioctl,
> + open:tlclk_open,
> + release:tlclk_release,
Please use C99 struct initializers.
> +
> +};
> +/*
> +* Function : Module Initialisation
> +* Description : Called at module loading,
> +* all the OS registering stuff is her
> +*/
> +static int __init
> +tlclk_init(void)
> +{
> + alarm_events = kmalloc(sizeof (struct tlclk_alarms), GFP_KERNEL);
> +
> + if(!alarm_events)
> + return -EBUSY;
> +
> + memset(alarm_events, 0, sizeof (struct tlclk_alarms));
> +
> +/* Read telecom clock IRQ number (Set by BIOS) */
> +
> + telclk_interrupt = (inb(TLCLK_REG7) & 0x0f);
> +
> + printk(KERN_WARNING "telclock: Reserving I/O region...\n");
> +
> + if (check_region(TLCLK_BASE, 8)) {
> + printk(KERN_ERR
> + "telclock: I/O region already used by another
> driver!\n");
> + return -EBUSY;
You're leaking alarm_events here.
> + } else {
> + request_region(TLCLK_BASE, 8, "telclock");
Please put nominal case first (i.e. make this the first block).
> + }
> +
> +/* DEVFS or NOT? */
> +
> +#ifdef CONFIG_DEVFS_FS
> + devfs_handle = devfs_register(NULL, "telclock",
> + DEVFS_FL_AUTO_DEVNUM, TLCLK_MAJOR,
> + 0,
> + S_IFCHR | S_IRUGO | S_IWUGO,
> + &tlclk_fops, NULL);
> + if (!devfs_handle)
> + return -EBUSY;
You're leaking alarm_events and reserved region here. (Use gotos for
error handling, btw.)
> +#else
> + tlclk_major = register_chrdev(tlclk_major, "telclock", &tlclk_fops);
> +
> + if (tlclk_major < 0) {
> + printk(KERN_ERR "telclock: can't get major! %d\n",
> tlclk_major);
> + return tlclk_major;
Same as before plus leaking devfs handle.
> + }
> +#endif
> +
> + init_timer(&switchover_timer);
> + switchover_timer.function = switchover_timeout;
> + switchover_timer.data = 0;
> +
> + return 0;
> +}
> diff -ruN 2.4.31-ori/drivers/char/tlclk.h 2.4.31-mod/drivers/char/tlclk.h
> --- 2.4.31-ori/drivers/char/tlclk.h Wed Dec 31 19:00:00 1969
> +++ 2.4.31-mod/drivers/char/tlclk.h Wed Jun 22 09:43:10 2005
> +/* Ioctl definitions */
> +
> +/* Use 0xA1 as magic number */
> +#define TLCLK_IOC_MAGIC 0xA1
> +
> +/*Hardware Reset of the PLL */
> +
> +#define RESET_ON 0x00
> +#define RESET_OFF 0x01
Please use enums instead (applies to other parts of this file too).
next prev parent reply other threads:[~2005-06-22 19:44 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-06-22 15:12 Patch of a new driver for kernel 2.4.x that need review Bouchard, Sebastien
2005-06-22 19:43 ` Pekka Enberg [this message]
2005-06-22 20:32 ` Willy Tarreau
2005-06-22 20:59 ` Bill Gatliff
2005-06-22 21:58 ` Willy Tarreau
2005-06-23 4:58 ` Pekka Enberg
2005-06-23 4:16 ` Pekka J Enberg
2005-06-23 4:49 ` Willy Tarreau
2005-07-06 21:11 ` Mark Gross
2005-07-07 6:00 ` Pekka J Enberg
2005-07-07 6:50 ` Dmitry Torokhov
2005-07-07 6:55 ` Pekka J Enberg
2005-07-07 7:13 ` Dmitry Torokhov
2005-07-07 7:43 ` Pekka J Enberg
2005-07-07 6:10 ` Pekka J Enberg
2005-06-22 20:04 ` Pekka Enberg
2005-06-23 21:42 ` Alan Cox
2005-06-22 21:18 ` Jesper Juhl
2005-07-06 21:14 ` Mark Gross
2005-07-06 22:49 ` randy_dunlap
2005-07-06 22:57 ` Greg KH
2005-08-08 15:35 ` Mark Gross
2005-08-09 7:17 ` Pekka Enberg
2005-08-09 16:56 ` Mark Gross
2005-08-09 17:51 ` Nishanth Aravamudan
-- strict thread matches above, loose matches on Subject: below --
2005-07-07 8:15 moreau francis
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=84144f020506221243163d06a2@mail.gmail.com \
--to=penberg@gmail.com \
--cc=Sebastien.Bouchard@ca.kontron.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mario.lorenzini@ca.kontron.com \
--cc=penberg@cs.helsinki.fi \
/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