On Wed, Nov 29, 2017 at 11:17:15AM +0100, Greg KH wrote: > On Mon, Nov 20, 2017 at 10:23:56AM -0800, Luis R. Rodriguez wrote: > > This makes it clearer that the parameters passed are only used for > > the preallocated buffer option, ie, when a caller uses: > > > > request_firmware_into_buf() > > > > Otherwise this code won't run. We flip the logic just so the actual > > prellocated buf code is not indented. > > > > Signed-off-by: Luis R. Rodriguez <mcgrof@xxxxxxxxxx> > > --- > > drivers/base/firmware_class.c | 11 +++++++++-- > > 1 file changed, 9 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/base/firmware_class.c b/drivers/base/firmware_class.c > > index 4f64410fe7e6..aba3f2cbe2f4 100644 > > --- a/drivers/base/firmware_class.c > > +++ b/drivers/base/firmware_class.c > > @@ -146,6 +146,14 @@ static struct firmware_cache fw_cache; > > extern struct builtin_fw __start_builtin_fw[]; > > extern struct builtin_fw __end_builtin_fw[]; > > > > +static void fw_copy_to_prealloc_buf(struct firmware *fw, > > + void *buf, size_t size) > > +{ > > + if (!buf || size < fw->size) > > + return; > > Shouldn't this return an error? No, its a no-op when these are not set, and its actually *why* I created the function. The parameters are *only* useful for the prealloc buf fw calls. Keeping track of all this while reading the code is actually not easy and this should make it clearer. > > > + memcpy(buf, fw->data, fw->size); > > I'll take this, but it feels really odd... Thanks. Luis