On Tue, 23 Jul 2019 09:02:48 -0700 Matthew Wilcox <wi...@infradead.org> wrote:

> On Mon, Jul 22, 2019 at 05:43:07PM -0700, Ira Weiny wrote:
> > > diff --git a/drivers/crypto/chelsio/chtls/chtls_io.c 
> > > b/drivers/crypto/chelsio/chtls/chtls_io.c
> > > index 551bca6fef24..925be5942895 100644
> > > --- a/drivers/crypto/chelsio/chtls/chtls_io.c
> > > +++ b/drivers/crypto/chelsio/chtls/chtls_io.c
> > > @@ -1078,7 +1078,7 @@ int chtls_sendmsg(struct sock *sk, struct msghdr 
> > > *msg, size_t size)
> > >                   bool merge;
> > >  
> > >                   if (page)
> > > -                         pg_size <<= compound_order(page);
> > > +                         pg_size = page_size(page);
> > >                   if (off < pg_size &&
> > >                       skb_can_coalesce(skb, i, page, off)) {
> > >                           merge = 1;
> > > @@ -1105,8 +1105,7 @@ int chtls_sendmsg(struct sock *sk, struct msghdr 
> > > *msg, size_t size)
> > >                                                      __GFP_NORETRY,
> > >                                                      order);
> > >                                   if (page)
> > > -                                         pg_size <<=
> > > -                                                 compound_order(page);
> > > +                                         pg_size <<= order;
> > 
> > Looking at the code I see pg_size should be PAGE_SIZE right before this so 
> > why
> > not just use the new call and remove the initial assignment?
> 
> This driver is really convoluted.  I wasn't certain I wouldn't break it
> in some horrid way.  I made larger changes to it originally, then they
> touched this part of the driver and I had to rework the patch to apply
> on top of their changes.  So I did something more minimal.
> 
> This, on top of what's in Andrew's tree, would be my guess, but I don't
> have the hardware.
> 
> diff --git a/drivers/crypto/chelsio/chtls/chtls_io.c 
> b/drivers/crypto/chelsio/chtls/chtls_io.c
> index 925be5942895..d4eb0fcd04c7 100644
> --- a/drivers/crypto/chelsio/chtls/chtls_io.c
> +++ b/drivers/crypto/chelsio/chtls/chtls_io.c
> @@ -1073,7 +1073,7 @@ int chtls_sendmsg(struct sock *sk, struct msghdr *msg, 
> size_t size)
>               } else {
>                       int i = skb_shinfo(skb)->nr_frags;
>                       struct page *page = TCP_PAGE(sk);
> -                     int pg_size = PAGE_SIZE;
> +                     unsigned int pg_size = 0;
>                       int off = TCP_OFF(sk);
>                       bool merge;
>  
> @@ -1092,7 +1092,7 @@ int chtls_sendmsg(struct sock *sk, struct msghdr *msg, 
> size_t size)
>                       if (page && off == pg_size) {
>                               put_page(page);
>                               TCP_PAGE(sk) = page = NULL;
> -                             pg_size = PAGE_SIZE;
> +                             pg_size = 0;
>                       }
>  
>                       if (!page) {
> @@ -1104,15 +1104,13 @@ int chtls_sendmsg(struct sock *sk, struct msghdr 
> *msg, size_t size)
>                                                          __GFP_NOWARN |
>                                                          __GFP_NORETRY,
>                                                          order);
> -                                     if (page)
> -                                             pg_size <<= order;
>                               }
>                               if (!page) {
>                                       page = alloc_page(gfp);
> -                                     pg_size = PAGE_SIZE;
>                               }
>                               if (!page)
>                                       goto wait_for_memory;
> +                             pg_size = page_size(page);
>                               off = 0;
>                       }

I didn't do anything with this.  I assume the original patch (which has
been in -next since July 22) is good and the above is merely a cleanup?


Reply via email to