Re: [PATCH] nx-842: Endian swap ->count before handing over to the nx-842 compressor

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, Oct 31, 2015 at 08:38:17AM -0400, Dan Streetman wrote:
> On Fri, Oct 30, 2015 at 6:45 PM, Ram Pai <linuxram@xxxxxxxxxx> wrote:
> > The nx-842 compressor overshoots the output buffer corrupting memory. Verified
> > that the following patch fixes the issue on a little-endian system.
> >
> > Signed-off-by: Ram Pai <linuxram@xxxxxxxxxx>
> > ---
> >  drivers/crypto/nx/nx-842-powernv.c |    2 +-
> >  1 files changed, 1 insertions(+), 1 deletions(-)
> >
> > diff --git a/drivers/crypto/nx/nx-842-powernv.c b/drivers/crypto/nx/nx-842-powernv.c
> > index 3750e13..3b80ea7 100644
> > --- a/drivers/crypto/nx/nx-842-powernv.c
> > +++ b/drivers/crypto/nx/nx-842-powernv.c
> > @@ -66,7 +66,7 @@ static void setup_indirect_dde(struct data_descriptor_entry *dde,
> >                                unsigned int dde_count, unsigned int byte_count)
> >  {
> >         dde->flags = 0;
> > -       dde->count = dde_count;
> > +       dde->count = cpu_to_be32(dde_count);
> 
> ->count is u8, I don't think this is correct...you could change
> dde_count to a u8, but I'm skeptical that's required at all, are you
> sure this is your problem?  The dde->length should restrict the coproc
> from r/w past the output buffer anyway, even if the ->count is too
> large...

Dan, you are right. The problem does resurface even after the above change.
There is something else going on. Please ignore this patch for now.

I see corruption, when the output buffer is smaller than needed to hold
the compressed data. I expect it to return -ENOSPC, but its not; instead
overshoots and corrupts.

RP

--
To unsubscribe from this list: send the line "unsubscribe linux-crypto" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Kernel]     [Gnu Classpath]     [Gnu Crypto]     [DM Crypt]     [Netfilter]     [Bugtraq]

  Powered by Linux