> Brian Somers <[EMAIL PROTECTED]> wrote:
>> Of course m_get() et. al. seem to manage to get MSIZE aligned pointers
>> back
>> from uma_zalloc_arg(zone_mbuf...) anyway, but surely that's an
>> implementation
>> side effect and the align argument should be corrected.
>
> This change looks right to me, but I'm hardly an expert here.
>
>> There should probably also be a KASSERT here to ensure that MSIZE is
>> sane
>
> This might be better as a CTASSERT:
>
> Index: kern_mbuf.c
> ===================================================================
> RCS file: /ref/cvsf/src/sys/kern/kern_mbuf.c,v
> retrieving revision 1.3
> diff -u -r1.3 kern_mbuf.c
> --- kern_mbuf.c       2 Aug 2004 00:18:35 -0000       1.3
> +++ kern_mbuf.c       10 Sep 2004 06:53:10 -0000
> @@ -123,6 +123,9 @@
>  static void  mb_reclaim(void *);
>  static void  mbuf_init(void *);
>
> +/* Ensure that MSIZE doesn't break dtom(). */
> +CTASSERT((((MSIZE - 1) ^ MSIZE) + 1) >> 1 == MSIZE);
> +
>  /*
>   * Initialize FreeBSD Network buffer allocation.
>   */
> @@ -135,7 +138,7 @@
>        * Configure UMA zones for Mbufs, Clusters, and Packets.
>        */
>       zone_mbuf = uma_zcreate("Mbuf", MSIZE, mb_ctor_mbuf, mb_dtor_mbuf,
> -         NULL, NULL, UMA_ALIGN_PTR, UMA_ZONE_MAXBUCKET);
> +         NULL, NULL, MSIZE - 1, UMA_ZONE_MAXBUCKET);
>       zone_clust = uma_zcreate("MbufClust", MCLBYTES, mb_ctor_clust,
>           mb_dtor_clust, NULL, NULL, UMA_ALIGN_PTR, UMA_ZONE_REFCNT);
>       if (nmbclusters > 0)
>
>

Agreed.  I didn't know about CTASSERT()!

Cheers.

--
Brian <[EMAIL PROTECTED]>                        <[EMAIL PROTECTED]>
      <http://www.Awfulhak.org>                   <[EMAIL PROTECTED]>
Don't _EVER_ lose your sense of humour !


_______________________________________________
[EMAIL PROTECTED] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to