On 08/03/2018 01:03 PM, Tony Battersby wrote: > On 08/03/2018 12:22 PM, Matthew Wilcox wrote: >> On Fri, Aug 03, 2018 at 06:59:20PM +0300, Andy Shevchenko wrote: >>>>>> I'm pretty sure this was created in an order to avoid bad looking (and >>>>>> in some cases frightening) "NULL device *" part. >>> JFYI: git log --no-merges --grep 'NULL device \*' >> I think those commits actually argue in favour of Tony's patch to remove >> the special casing. Is it really useful to create dma pools with a NULL >> device? >> >> > dma_alloc_coherent() does appear to support a NULL dev, so it might make > sense in theory. But I can't find any in-tree callers that actually > pass a NULL dev to dma_pool_create(). So for one of the dreaded (NULL > device *) messages to show up, it would take both a new caller that > passes a NULL dev to dma_pool_create() and a bug to cause the message to > be printed. Is that worth the special casing? > 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.