2007-01-06 13:18:50

by Ahmed S. Darwish

[permalink] [raw]
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 )

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);
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


2007-01-08 04:27:32

by Ahmed S. Darwish

[permalink] [raw]
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 ?

I'll send the modified patch without the NACKed parts in minutes ..

--
Ahmed S. Darwish
http://darwish-07.blogspot.com

2007-01-08 04:54:58

by Ahmed S. Darwish

[permalink] [raw]
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:
>
> 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

2007-01-08 07:27:15

by Li Yang

[permalink] [raw]
Subject: 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: [email protected]; [email protected]
> 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

2007-01-09 03:37:44

by Li Yang

[permalink] [raw]
Subject: 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: [email protected]
> 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