Hi Thomas,

On Sun, 22 Apr 2018 18:23:46 +0200 Thomas Gleixner <[email protected]> wrote:
>
> The rslib usage in dm/verity_fec is broken because init_rs() can nest in
> GFP_NOIO mempool allocations as init_rs() is invoked from the mempool alloc
> callback.
> 
> Provide a variant which takes gfp_t flags as argument.
> 
> Signed-off-by: Thomas Gleixner <[email protected]>
> Cc: Mike Snitzer <[email protected]>
> Cc: Alasdair Kergon <[email protected]>
> Cc: Neil Brown <[email protected]>
> ---
>  include/linux/rslib.h           |   26 +++++++++++++++++++++++---
>  lib/reed_solomon/reed_solomon.c |   36 ++++++++++++++++++++----------------
>  2 files changed, 43 insertions(+), 19 deletions(-)
> 
> --- a/include/linux/rslib.h
> +++ b/include/linux/rslib.h
> @@ -77,10 +77,30 @@ int decode_rs16(struct rs_control *rs, u
>  #endif
>  
>  /* Create or get a matching rs control structure */
> -struct rs_control *init_rs(int symsize, int gfpoly, int fcr, int prim,
> -                        int nroots);
> +struct rs_control *init_rs_gfp(int symsize, int gfpoly, int fcr, int prim,
> +                            int nroots, gfp_t gfp);
> +
> +/**
> + * init_rs - Create a RS control struct and initialize it
> + *  @symsize:        the symbol size (number of bits)
> + *  @gfpoly: the extended Galois field generator polynomial coefficients,
> + *           with the 0th coefficient in the low order bit. The polynomial
> + *           must be primitive;
> + *  @fcr:    the first consecutive root of the rs code generator polynomial
> + *           in index form
> + *  @prim:   primitive element to generate polynomial roots
> + *  @nroots: RS code generator polynomial degree (number of roots)
> + *
> + * Allocations use GFP_KERNEL.
> + */
> +static inline struct rs_control *init_rs(int symsize, int gfpoly, int fcr,
> +                                      int prim, int nroots)
> +{
> +     return init_rs_gfp(symsize, gfpoly, fcr, prim, nroots, GFP_KERNEL);
> +}
> +

The version of this patch that Kees has committed to his kspp tree in 
linux-next has

#include <linux/slab.h>

why not just

#include <linux/types.h>        /* for gpf_t */
#include <linux/gpf.h>          /* for GFP_KERNEL */

?
-- 
Cheers,
Stephen Rothwell

Attachment: pgpxFR8qJf2jV.pgp
Description: OpenPGP digital signature

Reply via email to