On 11/09/2019 11.16, Dan Carpenter wrote: > On Wed, Sep 11, 2019 at 11:04:38AM +0200, Sandro Volery wrote: >> >> >>> On 11 Sep 2019, at 10:52, Dan Carpenter <dan.carpenter@xxxxxxxxxx> wrote: >>> >>> On Wed, Sep 11, 2019 at 08:23:59AM +0200, Sandro Volery wrote: >>>> strcpy was used multiple times in strcpy to write into dev->name. >>>> I replaced them with strscpy. Yes, that's obviously what the patch does. The commit log is supposed to explain _why_. >>>> Signed-off-by: Sandro Volery <sandro@xxxxxxxxxx> >>>> --- >>>> drivers/staging/octeon/ethernet.c | 16 ++++++++-------- >>>> 1 file changed, 8 insertions(+), 8 deletions(-) >>>> >>>> diff --git a/drivers/staging/octeon/ethernet.c b/drivers/staging/octeon/ethernet.c >>>> index 8889494adf1f..cf8e9a23ebf9 100644 >>>> --- a/drivers/staging/octeon/ethernet.c >>>> +++ b/drivers/staging/octeon/ethernet.c >>>> @@ -784,7 +784,7 @@ static int cvm_oct_probe(struct platform_device *pdev) >>>> priv->imode = CVMX_HELPER_INTERFACE_MODE_DISABLED; >>>> priv->port = CVMX_PIP_NUM_INPUT_PORTS; >>>> priv->queue = -1; >>>> - strcpy(dev->name, "pow%d"); >>>> + strscpy(dev->name, "pow%d", sizeof(dev->name)); >>> >>> Is there a program which is generating a warning for this code? We know >>> that "pow%d" is 6 characters and static analysis tools can understand >>> this code fine so we know it's safe. >> >> Well I was confused too but checkpatch complained about >> it so I figured I'd clean it up quick > > Ah. It's a new checkpatch warning. I don't care in that case. I'm > fine with replacing all of these in that case. But why? It actually gives _less_ compile-time checking (gcc and all static tools know perfectly well what strcpy is and does, but knows nothing of strscpy). And using sizeof() instead of ARRAY_SIZE() means a future reader is not even sure dev->name is not just a pointer. Moreover, it's very likely also a runtime and .text pessimization, again because gcc knows what strcpy does, so it can just do a few immediate stores (e.g. 0x25776f70 for the "pow%" part) instead of emitting an actual function call. Rasmus _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel