Message ID | 20180306045647.7784-1-oohall@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Looks good,
Reviewed-by: Christoph Hellwig <hch@lst.de>
On 05/03/18 09:56 PM, Oliver O'Halloran wrote: > devm_memremap_pages() was re-worked in e8d513483300 to take a caller > allocated struct dev_pagemap as a function parameter. A call to > devres_free() was left in the error cleanup path which results in > a kernel panic if the remap fails for some reason. Remove it > to fix the panic and let devm_memremap_pages() fail gracefully. > > Fixes: e8d513483300 ("memremap: change devm_memremap_pages interface to use struct dev_pagemap") > Cc: Logan Gunthorpe <logang@deltatee.com> > Cc: Christoph Hellwig <hch@lst.de> > Cc: Dan Williams <dan.j.williams@intel.com> > Signed-off-by: Oliver O'Halloran <oohall@gmail.com> Reviewed-by: Logan Gunthorpe <logang@deltatee.com> > --- > Both in-tree users of devm_memremap_pages() embed dev_pagemap into other > structures so this shouldn't cause any leaks. Logan's p2p series does > add one usage that assumes pgmap will be freed on error so that'll > need fixing. Yup, nice catch! I'll fix that for the next series. Thanks, Logan
On Tue, Mar 6, 2018 at 8:55 AM, Logan Gunthorpe <logang@deltatee.com> wrote: > > > On 05/03/18 09:56 PM, Oliver O'Halloran wrote: >> >> devm_memremap_pages() was re-worked in e8d513483300 to take a caller >> allocated struct dev_pagemap as a function parameter. A call to >> devres_free() was left in the error cleanup path which results in >> a kernel panic if the remap fails for some reason. Remove it >> to fix the panic and let devm_memremap_pages() fail gracefully. >> >> Fixes: e8d513483300 ("memremap: change devm_memremap_pages interface to >> use struct dev_pagemap") >> Cc: Logan Gunthorpe <logang@deltatee.com> >> Cc: Christoph Hellwig <hch@lst.de> >> Cc: Dan Williams <dan.j.williams@intel.com> >> Signed-off-by: Oliver O'Halloran <oohall@gmail.com> > > > Reviewed-by: Logan Gunthorpe <logang@deltatee.com> Thanks, applied.
diff --git a/kernel/memremap.c b/kernel/memremap.c index 4dd4274cabe2..895e6b76b25e 100644 --- a/kernel/memremap.c +++ b/kernel/memremap.c @@ -427,7 +427,6 @@ void *devm_memremap_pages(struct device *dev, struct dev_pagemap *pgmap) err_pfn_remap: err_radix: pgmap_radix_release(res, pgoff); - devres_free(pgmap); return ERR_PTR(error); } EXPORT_SYMBOL(devm_memremap_pages);
devm_memremap_pages() was re-worked in e8d513483300 to take a caller allocated struct dev_pagemap as a function parameter. A call to devres_free() was left in the error cleanup path which results in a kernel panic if the remap fails for some reason. Remove it to fix the panic and let devm_memremap_pages() fail gracefully. Fixes: e8d513483300 ("memremap: change devm_memremap_pages interface to use struct dev_pagemap") Cc: Logan Gunthorpe <logang@deltatee.com> Cc: Christoph Hellwig <hch@lst.de> Cc: Dan Williams <dan.j.williams@intel.com> Signed-off-by: Oliver O'Halloran <oohall@gmail.com> --- Both in-tree users of devm_memremap_pages() embed dev_pagemap into other structures so this shouldn't cause any leaks. Logan's p2p series does add one usage that assumes pgmap will be freed on error so that'll need fixing. --- kernel/memremap.c | 1 - 1 file changed, 1 deletion(-)