lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Fri, 8 May 2020 15:27:37 +0200
From:   Greg Kroah-Hartman <gregkh@...uxfoundation.org>
To:     Naresh Kamboju <naresh.kamboju@...aro.org>
Cc:     Christoph Hellwig <hch@....de>, m.szyprowski@...sung.com,
        open list <linux-kernel@...r.kernel.org>,
        linux- stable <stable@...r.kernel.org>,
        lkft-triage@...ts.linaro.org
Subject: Re: [PATCH 5.4 40/50] dma-direct: exclude dma_direct_map_resource
 from the min_low_pfn check

On Fri, May 08, 2020 at 06:50:02PM +0530, Naresh Kamboju wrote:
> On Fri, 8 May 2020 at 18:23, Greg Kroah-Hartman
> <gregkh@...uxfoundation.org> wrote:
> >
> > From: Christoph Hellwig <hch@....de>
> >
> > commit 68a33b1794665ba8a1d1ef1d3bfcc7c587d380a6 upstream.
> >
> > The valid memory address check in dma_capable only makes sense when mapping
> > normal memory, not when using dma_map_resource to map a device resource.
> > Add a new boolean argument to dma_capable to exclude that check for the
> > dma_map_resource case.
> >
> > Fixes: b12d66278dd6 ("dma-direct: check for overflows on 32 bit DMA addresses")
> > Reported-by: Marek Szyprowski <m.szyprowski@...sung.com>
> > Signed-off-by: Christoph Hellwig <hch@....de>
> > Acked-by: Marek Szyprowski <m.szyprowski@...sung.com>
> > Tested-by: Marek Szyprowski <m.szyprowski@...sung.com>
> > Signed-off-by: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
> <trim>
> >
> > --- a/kernel/dma/direct.c
> > +++ b/kernel/dma/direct.c
> > @@ -327,7 +327,7 @@ static inline bool dma_direct_possible(s
> >                 size_t size)
> >  {
> >         return swiotlb_force != SWIOTLB_FORCE &&
> > -               dma_capable(dev, dma_addr, size);
> > +               dma_capable(dev, dma_addr, size, true);
> 
> While building kernel Image for arm architecture the following error noticed
> on stale-rc 5.4 kernel branch.
> 
>  # make -sk KBUILD_BUILD_USER=TuxBuild -C/linux -j16 ARCH=arm
> CROSS_COMPILE=arm-linux-gnueabihf- HOSTCC=gcc CC="sccache
> arm-linux-gnueabihf-gcc" O=build zImage
>  #
>  ../kernel/dma/direct.c: In function ‘dma_direct_possible’:
>  ../kernel/dma/direct.c:330:3: error: too many arguments to function
> ‘dma_capable’
>    330 |   dma_capable(dev, dma_addr, size, true);
>        |   ^~~~~~~~~~~
>  In file included from ../include/linux/dma-direct.h:12,
>                   from ../kernel/dma/direct.c:10:
>  ../arch/arm/include/asm/dma-direct.h:17:20: note: declared here
>     17 | static inline bool dma_capable(struct device *dev, dma_addr_t
> addr, size_t size)
>        |                    ^~~~~~~~~~~
>  In file included from ../include/linux/init.h:5,
>                   from ../include/linux/memblock.h:12,
>                   from ../kernel/dma/direct.c:7:
>  ../kernel/dma/direct.c: In function ‘dma_direct_map_resource’:
>  ../kernel/dma/direct.c:379:16: error: too many arguments to function
> ‘dma_capable’
>    379 |  if (unlikely(!dma_capable(dev, dma_addr, size, false))) {
>        |                ^~~~~~~~~~~
>  ../include/linux/compiler.h:78:42: note: in definition of macro ‘unlikely’
>     78 | # define unlikely(x) __builtin_expect(!!(x), 0)
>        |                                          ^
>  In file included from ../include/linux/dma-direct.h:12,
>                   from ../kernel/dma/direct.c:10:
>  ../arch/arm/include/asm/dma-direct.h:17:20: note: declared here
>     17 | static inline bool dma_capable(struct device *dev, dma_addr_t
> addr, size_t size)
>        |                    ^~~~~~~~~~~
>  make[3]: *** [../scripts/Makefile.build:266: kernel/dma/direct.o] Error 1
>  In file included from ../include/linux/string.h:6,
>                   from ../include/linux/dma-mapping.h:6,
>                   from ../include/linux/dma-direct.h:5,
>                   from ../kernel/dma/swiotlb.c:24:
>  ../kernel/dma/swiotlb.c: In function ‘swiotlb_map’:
>  ../kernel/dma/swiotlb.c:681:16: error: too many arguments to function
> ‘dma_capable’
>    681 |  if (unlikely(!dma_capable(dev, *dma_addr, size, true))) {
>        |                ^~~~~~~~~~~
>  ../include/linux/compiler.h:78:42: note: in definition of macro ‘unlikely’
>     78 | # define unlikely(x) __builtin_expect(!!(x), 0)
>        |                                          ^
>  In file included from ../include/linux/dma-direct.h:12,
>                   from ../kernel/dma/swiotlb.c:24:
>  ../arch/arm/include/asm/dma-direct.h:17:20: note: declared here
>     17 | static inline bool dma_capable(struct device *dev, dma_addr_t
> addr, size_t size)
>        |                    ^~~~~~~~~~

Ah crap, I think I remember trying to apply this in the past and running
into these issues.  I'll go drop it now and push out a -rc2, thanks!

greg k-h

Powered by blists - more mailing lists