[PATCH] drivers: Conversions from kmalloc+memset to k(z|c)alloc.

Rolf Eike Beer eike-kernel at sf-tec.de
Fri Jul 21 02:50:17 EDT 2006


Am Donnerstag, 20. Juli 2006 21:05 schrieb Panagiotis Issaris:
> From: Panagiotis Issaris <takis at issaris.org>
>
> drivers: Conversions from kmalloc+memset to k(z|c)alloc.
> --- a/drivers/atm/zatm.c
> +++ b/drivers/atm/zatm.c
> @@ -603,9 +603,8 @@ static int start_rx(struct atm_dev *dev)
>  DPRINTK("start_rx\n");
>  	zatm_dev = ZATM_DEV(dev);
>  	size = sizeof(struct atm_vcc *)*zatm_dev->chans;
> -	zatm_dev->rx_map = (struct atm_vcc **) kmalloc(size,GFP_KERNEL);
> +	zatm_dev->rx_map = kzalloc(size,GFP_KERNEL);

Space after comma.

> @@ -951,9 +950,8 @@ static int open_tx_first(struct atm_vcc
>  	skb_queue_head_init(&zatm_vcc->tx_queue);
>  	init_waitqueue_head(&zatm_vcc->tx_wait);
>  	/* initialize ring */
> -	zatm_vcc->ring = kmalloc(RING_SIZE,GFP_KERNEL);
> +	zatm_vcc->ring = kzalloc(RING_SIZE,GFP_KERNEL);

Same here

> @@ -443,12 +442,11 @@ int con_clear_unimap(struct vc_data *vc,
>  	p = (struct uni_pagedir *)*vc->vc_uni_pagedir_loc;
>  	if (p && p->readonly) return -EIO;
>  	if (!p || --p->refcount) {
> -		q = (struct uni_pagedir *)kmalloc(sizeof(*p), GFP_KERNEL);
> +		q = kzalloc(sizeof(*p), GFP_KERNEL);
>  		if (!q) {
>  			if (p) p->refcount++;
>  			return -ENOMEM;
>  		}
> -		memset(q, 0, sizeof(*q));
>  		q->refcount=1;
>  		*vc->vc_uni_pagedir_loc = (unsigned long)q;
>  	} else {

This one still changes the way the code works. Before your patch *p will be 
always zeroed out. Now if p is there before it will keep it's contents.

> diff --git a/drivers/char/keyboard.c b/drivers/char/keyboard.c
> index 056ebe8..c39d9bc 100644
> --- a/drivers/char/keyboard.c
> +++ b/drivers/char/keyboard.c
> @@ -1298,9 +1298,9 @@ static struct input_handle *kbd_connect(
>  	if (i == BTN_MISC && !test_bit(EV_SND, dev->evbit))
>  		return NULL;
>
> -	if (!(handle = kmalloc(sizeof(struct input_handle), GFP_KERNEL)))
> +	handle = kzalloc(sizeof(struct input_handle), GFP_KERNEL);
> +	if (!handle)
>  		return NULL;

sizeof(*handle)?

> diff --git a/drivers/char/random.c b/drivers/char/random.c
> index 4c3a5ca..0b520f6 100644
> --- a/drivers/char/random.c
> +++ b/drivers/char/random.c
> @@ -911,9 +911,8 @@ void rand_initialize_irq(int irq)
>  	 * If kmalloc returns null, we just won't use that entropy
>  	 * source.
>  	 */
> -	state = kmalloc(sizeof(struct timer_rand_state), GFP_KERNEL);
> +	state = kzalloc(sizeof(struct timer_rand_state), GFP_KERNEL);

sizeof(*state)?

> @@ -926,9 +925,8 @@ void rand_initialize_disk(struct gendisk
>  	 * If kmalloc returns null, we just won't use that entropy
>  	 * source.
>  	 */
> -	state = kmalloc(sizeof(struct timer_rand_state), GFP_KERNEL);
> +	state = kzalloc(sizeof(struct timer_rand_state), GFP_KERNEL);

Also here.

> diff --git a/drivers/char/sx.c b/drivers/char/sx.c
> index e1cd2bc..22b240c 100644
> --- a/drivers/char/sx.c
> +++ b/drivers/char/sx.c
> @@ -2278,18 +2278,6 @@ static int sx_init_drivers(void)
>  	return 0;
>  }
>
> -
> -static void * ckmalloc (int size)
> -{
> -	void *p;
> -
> -	p = kmalloc(size, GFP_KERNEL);
> -	if (p)
> -		memset(p, 0, size);
> -	return p;
> -}
> -
> -
>  static int sx_init_portstructs (int nboards, int nports)
>  {
>  	struct sx_board *board;
> @@ -2302,7 +2290,7 @@ static int sx_init_portstructs (int nboa
>
>  	/* Many drivers statically allocate the maximum number of ports
>  	   There is no reason not to allocate them dynamically. Is there? -- REW
> */ -	sx_ports          = ckmalloc(nports * sizeof (struct sx_port));
> +	sx_ports          = kcalloc(nports, sizeof (struct sx_port), GFP_KERNEL);

No space before opening brace.

> @@ -1477,7 +1466,7 @@ static int init_dev(struct tty_driver *d
>  	tp = o_tp = NULL;
>  	ltp = o_ltp = NULL;
>
> -	tty = alloc_tty_struct();
> +	tty = kzalloc(sizeof(struct tty_struct), GFP_KERNEL);

sizeof(*tty)?

> @@ -1502,15 +1491,13 @@ static int init_dev(struct tty_driver *d
>  	}
>
>  	if (!*ltp_loc) {
> -		ltp = (struct termios *) kmalloc(sizeof(struct termios),
> -						 GFP_KERNEL);
> +		ltp = kzalloc(sizeof(struct termios), GFP_KERNEL);

sizeof(*ltp)?

[more of this snipped]

> diff --git a/drivers/isdn/hisax/hfc_usb.c b/drivers/isdn/hisax/hfc_usb.c
> index b5e571a..8373ce4 100644
> --- a/drivers/isdn/hisax/hfc_usb.c
> +++ b/drivers/isdn/hisax/hfc_usb.c
> @@ -1479,11 +1479,9 @@ #endif
>  		/* found a valid USB Ta Endpint config */
>  		if (small_match != 0xffff) {
>  			iface = iface_used;
> -			if (!
> -			    (context =
> -			     kmalloc(sizeof(hfcusb_data), GFP_KERNEL)))
> +			context = kzalloc(sizeof(hfcusb_data), GFP_KERNEL);
> +			if (!context)
>  				return (-ENOMEM);	/* got no mem */

while you're at it. can you please change it to "return -ENOMEM;"? The comment 
does not help anyone and we return without braces.

> diff --git a/drivers/media/video/planb.c b/drivers/media/video/planb.c
> index 3484e36..25f8485 100644
> --- a/drivers/media/video/planb.c
> +++ b/drivers/media/video/planb.c
> @@ -353,9 +353,9 @@ static int planb_prepare_open(struct pla
>  		* PLANB_DUMMY)*sizeof(struct dbdma_cmd)
>  		+(PLANB_MAXLINES*((PLANB_MAXPIXELS+7)& ~7))/8
>  		+MAX_GBUFFERS*sizeof(unsigned int);
> -	if ((pb->priv_space = kmalloc (size, GFP_KERNEL)) == 0)
> +	pb->priv_space = kzalloc (size, GFP_KERNEL);

space

[...]

Eike



More information about the linux-pcmcia mailing list