On Fri, Aug 03, 2018 at 02:43:07PM -0400, Tony Battersby wrote: > Out of curiosity, I just tried to create a dmapool with a NULL dev and > it crashed on this: > > static inline int dev_to_node(struct device *dev) > { > return dev->numa_node; > } > > struct dma_pool *dma_pool_create(const char *name, struct device *dev, > size_t size, size_t align, size_t boundary) > { > ... > retval = kmalloc_node(sizeof(*retval), GFP_KERNEL, dev_to_node(dev)); > ... > } > > So either it needs more special cases for supporting a NULL dev, or the > special cases can be removed since no one does that anyway. Actually, it's worse. dev_to_node() works with a NULL dev ... unless CONFIG_NUMA is set. So we're leaving a timebomb by pretending to allow it. Let's just 'if (!dev) return NULL;' early in create.