On Tue, 6 Feb 2018, Alexander Bluhm wrote:

> On Tue, Feb 06, 2018 at 11:04:51AM +1300, Richard Procter wrote:
> > > @@ -657,12 +667,13 @@ ah_input(struct mbuf *m, struct tdb *tdb
> > >   m_copyback(m, skip + rplen, ahx->authsize, ipseczeroes, M_NOWAIT);
> > >  
> > >   /* "Massage" the packet headers for crypto processing. */
> > > - if ((btsx = ah_massage_headers(&m, tdb->tdb_dst.sa.sa_family,
> > > -     skip, ahx->type, 0)) != 0) {
> > > + error = ah_massage_headers(&m, tdb->tdb_dst.sa.sa_family, skip,
> > > +     ahx->type, 0);
> > > + if (error) {
> > >           /* mbuf will be free'd by callee. */
> > 
> > This pre-existing comment muddled me. ah_massage_headers() has already 
> > freed it on error.
> 
> Although the code is correct, I also had to read the comment twice
> when I first saw it.  I think the tense is wrong.  The callee is
> ah_massage_headers, and there free has been called.
> 
> Does this clarify it?

It does, but the grammar is a little odd. (English tenses are obscure when 
I stop to think about them -- for instance, "he will be speckled" and "he 
has been bespeckled" works but "he has been be-freed" doesn't for some 
reason... I almost want to say "befree'n" but that sounds archaic.)

Anyways, I'll commit the simplification below. Having raised the issue, I 
should have provided it in the first place.

Index: netinet/ip_ah.c
===================================================================
RCS file: /cvs/src/sys/netinet/ip_ah.c,v
retrieving revision 1.135
diff -u -p -u -r1.135 ip_ah.c
--- netinet/ip_ah.c     6 Feb 2018 14:54:22 -0000       1.135
+++ netinet/ip_ah.c     6 Feb 2018 20:01:57 -0000
@@ -670,7 +670,7 @@ ah_input(struct mbuf *m, struct tdb *tdb
        error = ah_massage_headers(&m, tdb->tdb_dst.sa.sa_family, skip,
            ahx->type, 0);
        if (error) {
-               /* mbuf will be free'd by callee. */
+               /* mbuf was freed by callee. */
                free(tc, M_XDATA, 0);
                crypto_freereq(crp);
                return error;
@@ -1158,7 +1158,7 @@ ah_output(struct mbuf *m, struct tdb *td
        error = ah_massage_headers(&m, tdb->tdb_dst.sa.sa_family, skip,
            ahx->type, 1);
        if (error) {
-               /* mbuf will be free'd by callee. */
+               /* mbuf was freed by callee. */
                free(tc, M_XDATA, 0);
                crypto_freereq(crp);
                return error;





> bluhm
> 
> Index: netinet/ip_ah.c
> ===================================================================
> RCS file: /data/mirror/openbsd/cvs/src/sys/netinet/ip_ah.c,v
> retrieving revision 1.135
> diff -u -p -r1.135 ip_ah.c
> --- netinet/ip_ah.c   6 Feb 2018 14:54:22 -0000       1.135
> +++ netinet/ip_ah.c   6 Feb 2018 15:14:29 -0000
> @@ -670,7 +670,7 @@ ah_input(struct mbuf *m, struct tdb *tdb
>       error = ah_massage_headers(&m, tdb->tdb_dst.sa.sa_family, skip,
>           ahx->type, 0);
>       if (error) {
> -             /* mbuf will be free'd by callee. */
> +             /* mbuf has been be free'd by callee. */
>               free(tc, M_XDATA, 0);
>               crypto_freereq(crp);
>               return error;
> @@ -1158,7 +1158,7 @@ ah_output(struct mbuf *m, struct tdb *td
>       error = ah_massage_headers(&m, tdb->tdb_dst.sa.sa_family, skip,
>           ahx->type, 1);
>       if (error) {
> -             /* mbuf will be free'd by callee. */
> +             /* mbuf has been be free'd by callee. */
>               free(tc, M_XDATA, 0);
>               crypto_freereq(crp);
>               return error;
> 

Reply via email to