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? > + memcpy(buf, fw->data, fw->size); I'll take this, but it feels really odd...