On Fri, Feb 16, 2018 at 03:55:24PM +0000, David Laight wrote: > From: Andy Shevchenko > > Sent: 16 February 2018 15:40 > > > > kasprintf() does the job of two: kmalloc() and sprintf(). > > Replace two calls with one. > ... > > - buf = kmalloc(strlen(wdriver->driver.name) + 5, GFP_KERNEL); > > + buf = kasprintf(GFP_KERNEL, "wmi/%s", wdriver->driver.name); > ... > > Except that kasprintf() has no idea how long a buffer is needed. > It might even do the printf twice just to get the length. Sure, but this is one-time and non-critical path. Unfortunately there isn't any guidance in Documentation here. Of the 520 or so instances of kasprintf usages in the kernel, device name or similar is a very common pattern. Eliminating manual counting of characters for buffer allocation seems like a good plan to me. So unless we want to argue that all those use cases are wrong, this would appear to be at least common practice, if not best practice for this particular pattern. Reviewed-by: Darren Hart (VMware) <dvhart@xxxxxxxxxxxxx> -- Darren Hart VMware Open Source Technology Center