Re: [U-Boot] [PATCH v3 1/3] net: Adds Fast Ethernet Controller driver for Armada100

----- "Mike Frysinger" vapier@gentoo.org wrote:
On Friday, August 26, 2011 02:36:51 Ajay Bhargav wrote:
+static int add_del_hash_entry(struct armdfec_device *darmdfec, u32
mach,
u32 macl, u32 rd, u32 skip, int del)
+{
u8 *last;
local var ...
last = (u8 *) entry;
last = last + sizeof(*entry);
return 0;
+}
so what's the point of these two assignments to "last" ?
I forgot to delete them during cleanup of initial code. Thanks for pointing.
+int armada100_fec_register(int base_addr)
when it comes to addresses for memory mapped registers, we typically use "unsigned long" rather than "int"
yes right...
darmdfec = malloc(sizeof(struct armdfec_device));
if (!darmdfec)
goto error;
if this first one fails, we jump to:
+error:
free(darmdfec->p_aligned_txbuf);
free(darmdfec->p_rxbuf);
free(darmdfec->p_rxdesc);
free(darmdfec->htpr);
looks like 4 NULL pointer derefs. so you'll need one specific path for the first malloc(), but the rest are fine. -mike
so you mean like this...
if(!darmdfec) goto error; ... error1: free(darmdfec->p_aligned_txbuf); free(darmdfec->p_rxbuf); free(darmdfec->p_rxdesc); free(darmdfec->htpr); error: free(darmdfec); return -1;
Thanks, Ajay Bhargav

On Monday, August 29, 2011 01:10:49 Ajay Bhargav wrote:
----- "Mike Frysinger" vapier@gentoo.org wrote:
On Friday, August 26, 2011 02:36:51 Ajay Bhargav wrote:
darmdfec = malloc(sizeof(struct armdfec_device));
if (!darmdfec)
goto error;
if this first one fails, we jump to:
+error:
free(darmdfec->p_aligned_txbuf);
free(darmdfec->p_rxbuf);
free(darmdfec->p_rxdesc);
free(darmdfec->htpr);
looks like 4 NULL pointer derefs. so you'll need one specific path for the first malloc(), but the rest are fine.
so you mean like this...
if(!darmdfec) goto error; ... error1: free(darmdfec->p_aligned_txbuf); free(darmdfec->p_rxbuf); free(darmdfec->p_rxdesc); free(darmdfec->htpr); error: free(darmdfec); return -1;
that's one way of fixing it -mike

----- "Mike Frysinger" vapier@gentoo.org wrote:
On Monday, August 29, 2011 01:10:49 Ajay Bhargav wrote:
----- "Mike Frysinger" vapier@gentoo.org wrote:
On Friday, August 26, 2011 02:36:51 Ajay Bhargav wrote:
darmdfec = malloc(sizeof(struct armdfec_device));
if (!darmdfec)
goto error;
if this first one fails, we jump to:
+error:
free(darmdfec->p_aligned_txbuf);
free(darmdfec->p_rxbuf);
free(darmdfec->p_rxdesc);
free(darmdfec->htpr);
looks like 4 NULL pointer derefs. so you'll need one specific
path
for the first malloc(), but the rest are fine.
so you mean like this...
if(!darmdfec) goto error; ... error1: free(darmdfec->p_aligned_txbuf); free(darmdfec->p_rxbuf); free(darmdfec->p_rxdesc); free(darmdfec->htpr); error: free(darmdfec); return -1;
that's one way of fixing it -mike
Any other better way?
--Ajay

On Monday, August 29, 2011 07:39:18 AM Ajay Bhargav wrote:
----- "Mike Frysinger" vapier@gentoo.org wrote:
On Monday, August 29, 2011 01:10:49 Ajay Bhargav wrote:
----- "Mike Frysinger" vapier@gentoo.org wrote:
On Friday, August 26, 2011 02:36:51 Ajay Bhargav wrote:
darmdfec = malloc(sizeof(struct armdfec_device));
if (!darmdfec)
goto error;
if this first one fails, we jump to:
+error:
free(darmdfec->p_aligned_txbuf);
free(darmdfec->p_rxbuf);
free(darmdfec->p_rxdesc);
free(darmdfec->htpr);
looks like 4 NULL pointer derefs. so you'll need one specific
path
for the first malloc(), but the rest are fine.
so you mean like this...
if(!darmdfec)
goto error;
...
error1: free(darmdfec->p_aligned_txbuf); free(darmdfec->p_rxbuf); free(darmdfec->p_rxdesc); free(darmdfec->htpr);
error: free(darmdfec); return -1;
that's one way of fixing it -mike
Any other better way?
I'd love to be enlightened on this topic too ...
--Ajay _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot

On Monday, August 29, 2011 01:39:18 Ajay Bhargav wrote:
----- "Mike Frysinger" vapier@gentoo.org wrote:
On Monday, August 29, 2011 01:10:49 Ajay Bhargav wrote:
----- "Mike Frysinger" vapier@gentoo.org wrote:
On Friday, August 26, 2011 02:36:51 Ajay Bhargav wrote:
darmdfec = malloc(sizeof(struct armdfec_device));
if (!darmdfec)
goto error;
if this first one fails, we jump to:
+error:
free(darmdfec->p_aligned_txbuf);
free(darmdfec->p_rxbuf);
free(darmdfec->p_rxdesc);
free(darmdfec->htpr);
looks like 4 NULL pointer derefs. so you'll need one specific
path
for the first malloc(), but the rest are fine.
so you mean like this...
if(!darmdfec)
goto error;
...
error1: free(darmdfec->p_aligned_txbuf); free(darmdfec->p_rxbuf); free(darmdfec->p_rxdesc); free(darmdfec->htpr);
error: free(darmdfec); return -1;
that's one way of fixing it
Any other better way?
since all your buffers are known fixed (at compile time) sizes, you could simply inline them into the structure so you only malloc() one buffer -mike

----- "Mike Frysinger" vapier@gentoo.org wrote:
On Monday, August 29, 2011 01:39:18 Ajay Bhargav wrote:
----- "Mike Frysinger" vapier@gentoo.org wrote:
On Monday, August 29, 2011 01:10:49 Ajay Bhargav wrote:
----- "Mike Frysinger" vapier@gentoo.org wrote:
On Friday, August 26, 2011 02:36:51 Ajay Bhargav wrote:
darmdfec = malloc(sizeof(struct armdfec_device));
if (!darmdfec)
goto error;
if this first one fails, we jump to:
+error:
free(darmdfec->p_aligned_txbuf);
free(darmdfec->p_rxbuf);
free(darmdfec->p_rxdesc);
free(darmdfec->htpr);
looks like 4 NULL pointer derefs. so you'll need one
specific
path
for the first malloc(), but the rest are fine.
so you mean like this...
if(!darmdfec)
goto error;
...
error1: free(darmdfec->p_aligned_txbuf); free(darmdfec->p_rxbuf); free(darmdfec->p_rxdesc); free(darmdfec->htpr);
error: free(darmdfec); return -1;
that's one way of fixing it
Any other better way?
since all your buffers are known fixed (at compile time) sizes, you could simply inline them into the structure so you only malloc() one buffer -mike
Yes.. thats another way of coding :) I will stick to previous one..
Thanks, Ajay Bhargav
participants (3)
-
Ajay Bhargav
-
Marek Vasut
-
Mike Frysinger