RE: [PATCH 2.6.20-rc3] UCC Ether driver: kmalloc casting cleanups
-Original Message- From: Ahmed S. Darwish [mailto:[EMAIL PROTECTED] Sent: Saturday, January 06, 2007 9:19 PM To: Li Yang-r58472 Cc: linux-kernel@vger.kernel.org Subject: [PATCH 2.6.20-rc3] UCC Ether driver: kmalloc casting cleanups [Please inform me if you are not the maintaner cause I'm not sure:)] Hi, A kmalloc casting cleanup patch. I wasn't able to compile the file drivers/net/ucc_geth.c cause of some not found headers (asm/of_platform.h, asm/qe.h, and others ) You need to use ARCH=powerpc to compile this driver. I don't know how you could select this driver without using powerpc arch. Signed-off-by: Ahmed Darwish [EMAIL PROTECTED] diff --git a/drivers/net/ucc_geth.c b/drivers/net/ucc_geth.c index 8243150..001109e 100644 --- a/drivers/net/ucc_geth.c +++ b/drivers/net/ucc_geth.c @@ -2864,8 +2864,8 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth) if (UCC_GETH_TX_BD_RING_ALIGNMENT 4) align = UCC_GETH_TX_BD_RING_ALIGNMENT; ugeth-tx_bd_ring_offset[j] = - (u32) (kmalloc((u32) (length + align), - GFP_KERNEL)); + kmalloc((u32) (length + align), GFP_KERNEL); + if (ugeth-tx_bd_ring_offset[j] != 0) ugeth-p_tx_bd_ring[j] = (void*)((ugeth-tx_bd_ring_offset[j] + @@ -2900,7 +2900,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth) if (UCC_GETH_RX_BD_RING_ALIGNMENT 4) align = UCC_GETH_RX_BD_RING_ALIGNMENT; ugeth-rx_bd_ring_offset[j] = - (u32) (kmalloc((u32) (length + align), GFP_KERNEL)); + kmalloc((u32) (length + align), GFP_KERNEL); NACK about the 2 clean-ups above. Cast from pointer to integer is required here. if (ugeth-rx_bd_ring_offset[j] != 0) ugeth-p_rx_bd_ring[j] = (void*)((ugeth-rx_bd_ring_offset[j] + @@ -2926,10 +2926,9 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth) /* Init Tx bds */ for (j = 0; j ug_info-numQueuesTx; j++) { /* Setup the skbuff rings */ - ugeth-tx_skbuff[j] = - (struct sk_buff **)kmalloc(sizeof(struct sk_buff *) * - ugeth-ug_info-bdRingLenTx[j], -GFP_KERNEL); + ugeth-tx_skbuff[j] = kmalloc(sizeof(struct sk_buff *) * + ugeth-ug_info-bdRingLenTx[j], + GFP_KERNEL); if (ugeth-tx_skbuff[j] == NULL) { ugeth_err(%s: Could not allocate tx_skbuff, @@ -2958,10 +2957,9 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth) /* Init Rx bds */ for (j = 0; j ug_info-numQueuesRx; j++) { /* Setup the skbuff rings */ - ugeth-rx_skbuff[j] = - (struct sk_buff **)kmalloc(sizeof(struct sk_buff *) * - ugeth-ug_info-bdRingLenRx[j], -GFP_KERNEL); + ugeth-rx_skbuff[j] = kmalloc(sizeof(struct sk_buff *) * + ugeth-ug_info-bdRingLenRx[j], + GFP_KERNEL); if (ugeth-rx_skbuff[j] == NULL) { ugeth_err(%s: Could not allocate rx_skbuff, @@ -3452,8 +3450,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth) * allocated resources can be released when the channel is freed. */ if (!(ugeth-p_init_enet_param_shadow = - (struct ucc_geth_init_pram *) kmalloc(sizeof(struct ucc_geth_init_pram), - GFP_KERNEL))) { + kmalloc(sizeof(struct ucc_geth_init_pram), GFP_KERNEL))) { ugeth_err (%s: Can not allocate memory for p_UccInitEnetParamShadows., __FUNCTION__); -- Ahmed S. Darwish http://darwish-07.blogspot.com - Leo - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 2.6.20-rc3] UCC Ether driver: kmalloc casting cleanups
On Mon, Jan 08, 2007 at 11:12:28AM +0800, Li Yang-r58472 wrote: From: Ahmed S. Darwish [mailto:[EMAIL PROTECTED] Hi, A kmalloc casting cleanup patch. Signed-off-by: Ahmed Darwish [EMAIL PROTECTED] [..] - (u32) (kmalloc((u32) (length + align), - GFP_KERNEL)); + kmalloc((u32) (length + align), GFP_KERNEL); + if (ugeth-tx_bd_ring_offset[j] != 0) ugeth-p_tx_bd_ring[j] = [..] - (u32) (kmalloc((u32) (length + align), GFP_KERNEL)); + kmalloc((u32) (length + align), GFP_KERNEL); NACK about the 2 clean-ups above. Cast from pointer to integer is required here. Are the casts from pointer to integer just needed to suppress gcc warnings or there's something technically important about them ? I'll send the modified patch without the NACKed parts in minutes .. -- Ahmed S. Darwish http://darwish-07.blogspot.com - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 2.6.20-rc3] UCC Ether driver: kmalloc casting cleanups
On Mon, Jan 08, 2007 at 11:12:28AM +0800, Li Yang-r58472 wrote: NACK about the 2 clean-ups above. Cast from pointer to integer is required here. Hi, here's the modified patch. A patch to switch kmalloc to kzalloc and clean some redundant kmalloc casts. Signed-off-by: Ahmed S. Darwish [EMAIL PROTECTED] --- diff --git a/drivers/net/ucc_geth.c b/drivers/net/ucc_geth.c index 8243150..0f58f5f 100644 --- a/drivers/net/ucc_geth.c +++ b/drivers/net/ucc_geth.c @@ -2926,10 +2926,9 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth) /* Init Tx bds */ for (j = 0; j ug_info-numQueuesTx; j++) { /* Setup the skbuff rings */ - ugeth-tx_skbuff[j] = - (struct sk_buff **)kmalloc(sizeof(struct sk_buff *) * - ugeth-ug_info-bdRingLenTx[j], - GFP_KERNEL); + ugeth-tx_skbuff[j] = kmalloc(sizeof(struct sk_buff *) * + ugeth-ug_info-bdRingLenTx[j], + GFP_KERNEL); if (ugeth-tx_skbuff[j] == NULL) { ugeth_err(%s: Could not allocate tx_skbuff, @@ -2958,10 +2957,9 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth) /* Init Rx bds */ for (j = 0; j ug_info-numQueuesRx; j++) { /* Setup the skbuff rings */ - ugeth-rx_skbuff[j] = - (struct sk_buff **)kmalloc(sizeof(struct sk_buff *) * - ugeth-ug_info-bdRingLenRx[j], - GFP_KERNEL); + ugeth-rx_skbuff[j] = kmalloc(sizeof(struct sk_buff *) * + ugeth-ug_info-bdRingLenRx[j], + GFP_KERNEL); if (ugeth-rx_skbuff[j] == NULL) { ugeth_err(%s: Could not allocate rx_skbuff, @@ -3450,19 +3448,16 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth) * resource. * This shadow structure keeps a copy of what was done so that the * allocated resources can be released when the channel is freed. +* *p_init_enet_param_shadow is zeroed by kzalloc */ - if (!(ugeth-p_init_enet_param_shadow = -(struct ucc_geth_init_pram *) kmalloc(sizeof(struct ucc_geth_init_pram), - GFP_KERNEL))) { + if (!(ugeth-p_init_enet_param_shadow = + kzalloc(sizeof(struct ucc_geth_init_pram), GFP_KERNEL))) { ugeth_err (%s: Can not allocate memory for p_UccInitEnetParamShadows., __FUNCTION__); ucc_geth_memclean(ugeth); return -ENOMEM; } - /* Zero out *p_init_enet_param_shadow */ - memset((char *)ugeth-p_init_enet_param_shadow, - 0, sizeof(struct ucc_geth_init_pram)); /* Fill shadow InitEnet command parameter structure */ -- Ahmed S. Darwish http://darwish-07.blogspot.com - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
RE: [PATCH 2.6.20-rc3] UCC Ether driver: kmalloc casting cleanups
-Original Message- From: Ahmed S. Darwish [mailto:[EMAIL PROTECTED] Sent: Monday, January 08, 2007 12:27 PM To: Li Yang-r58472 Cc: linux-kernel@vger.kernel.org; netdev@vger.kernel.org Subject: Re: [PATCH 2.6.20-rc3] UCC Ether driver: kmalloc casting cleanups On Mon, Jan 08, 2007 at 11:12:28AM +0800, Li Yang-r58472 wrote: From: Ahmed S. Darwish [mailto:[EMAIL PROTECTED] Hi, A kmalloc casting cleanup patch. Signed-off-by: Ahmed Darwish [EMAIL PROTECTED] [..] - (u32) (kmalloc((u32) (length + align), - GFP_KERNEL)); + kmalloc((u32) (length + align), GFP_KERNEL); + if (ugeth-tx_bd_ring_offset[j] != 0) ugeth-p_tx_bd_ring[j] = [..] - (u32) (kmalloc((u32) (length + align), GFP_KERNEL)); + kmalloc((u32) (length + align), GFP_KERNEL); NACK about the 2 clean-ups above. Cast from pointer to integer is required here. Are the casts from pointer to integer just needed to suppress gcc warnings or there's something technically important about them ? It is to suppress the warnings. IMHO, most type casts are not technically important but for sanity check. - Leo - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html