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 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.