James Carlson wrote:
Vasumathi Sundaram writes:
I fixed all the comments and the incremental webrev is at: http://cr.opensolaris.org/~vassun08/mdbmacro-webrev-r2/
[...]
usr/src/cmd/mdb/common/modules/ip/ip.c
[...]
  1680,1690: leaks allocated 'iw' structure.
'iw' is stored in wsp->walk_data and freed in ipcl_hash_walk_fini()

No, it's not.  It's only stored in wsp->walk_data at line 1697 (in the
new webrev above).  At lines 1681 and 1691, the function returns
*without* storing the 'iw' pointer anywhere and without freeing the
storage.

It's a leak, though a small one.
  1711: careful: check the size of the structure.  If it's "big," then
  allocate with mdb_alloc instead of using on the stack.  (This is a
  general mdb/kmdb issue; make sure you inspect all of your functions
  for excessive stack usage, because they can panic the system if used
  in kmdb, as I learned recently and rather painfully.)
The size of conn_t is large (>1K). I changed it use mdb_alloc.

There's a new (and much more serious) memory leak at lines 1717, 1728,
1730, and 1733: 'conn' isn't ever freed.

(Consider putting 'conn' inside ipcl_hash_walk_data_t rather than
allocating it and freeing it anew on each step.)

I will fix both. Thanks.
usr/src/uts/common/inet/ip/ip.c

  775,28358-28385: more should be removed to get code orphaned by this
        change.

  917-918: shouldn't this go as well?
The data structure srcid_map_t (ip_stack_t:ip_srcid_head) is opaque, defined and used only within ip_srcid.c
I could not pull this to mdb.

I'd very much prefer that we don't leave any of this ndd status report
swill behind for a future clean-up effort.  There are at least two
very simple fixes for this:

  1. Move struct srcid_map and srcid_map_t out of ip_srcid.c and put
     them in inet/ip.h with the rest of the general IP kernel data
     structures.  That will give mdb access to the structure.
I will do this one.
or:

  2. Just ditch the srcid map printing functions.  It's possible that
     this has just never been used.

I don't really have a strong preference between those to.

I fixed another problem in function mask_to_prefixlen(). I introduced a macro to get host-byte-ordered mask values.

What is this other problem that you've fixed?  What was wrong with the
ntohl() call that was there before?  (kmdb issue?)

My x86 nightly had a linker error with ntohl() for kmdb, while sparc build went through. Thats why I had to introduce the macros.
I got successful builds for both now.


Thanks
Vasumathi
_______________________________________________
networking-discuss mailing list
[email protected]

Reply via email to