Dave Jiang wrote: > __devm_create_dev_dax() calls alloc_dax() with the ops parameter passed > in as NULL. Therefore the ops pointer in dev_dax can be NULL. Add a > check in dax_direct_access() for ops and ops->direct_access() before > calling ops->direct_access().
Doesn't this need checking in dax_zero_page_range() and dax_recovery_write() as well? Ira > > Signed-off-by: Dave Jiang <[email protected]> > --- > drivers/dax/super.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/drivers/dax/super.c b/drivers/dax/super.c > index c00b9dff4a06..5cebaf11a58e 100644 > --- a/drivers/dax/super.c > +++ b/drivers/dax/super.c > @@ -160,6 +160,9 @@ long dax_direct_access(struct dax_device *dax_dev, > pgoff_t pgoff, long nr_pages, > if (nr_pages < 0) > return -EINVAL; > > + if (!dax_dev->ops || !dax_dev->ops->direct_access) > + return -EOPNOTSUPP; > + > avail = dax_dev->ops->direct_access(dax_dev, pgoff, nr_pages, > mode, kaddr, pfn); > if (!avail) > > base-commit: 11439c4635edd669ae435eec308f4ab8a0804808 > -- > 2.53.0 > >
