RE: [PATCH net-next 02/14] sfc: Add sysfs entry for flags (link control and primary)

2015-05-29 Thread David Laight
From: Shradha Shah
 Sent: 29 May 2015 11:01
 On  every adapter there will be one primary PF per adaptor and
 one link control PF per port.
...
 + return sprintf(buf, %d\n,
 +((efx-mcdi-fn_flags) 
 + (1  MC_CMD_DRV_ATTACH_EXT_OUT_FLAG_LINKCTRL))
 +? 1 : 0);

Horrid expression.
Why not:
(efx-mcdi-fn_flags  MC_CMD_DRV_ATTACH_EXT_OUT_FLAG_LINKCTRL)  1

using sprintf() is also excessive. Maybe:
*buf = '0' + (expression);
return 1;

You may also need to check for buffer overrun.

David

--
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH net-next 02/14] sfc: Add sysfs entry for flags (link control and primary)

2015-05-29 Thread Edward Cree
On 29/05/15 11:48, David Laight wrote:
 From: Shradha Shah
 Sent: 29 May 2015 11:01
 On  every adapter there will be one primary PF per adaptor and
 one link control PF per port.
 ...
 +return sprintf(buf, %d\n,
 +   ((efx-mcdi-fn_flags) 
 +(1  MC_CMD_DRV_ATTACH_EXT_OUT_FLAG_LINKCTRL))
 +   ? 1 : 0);
 Horrid expression.
 Why not:
   (efx-mcdi-fn_flags  MC_CMD_DRV_ATTACH_EXT_OUT_FLAG_LINKCTRL)  1
I think the idea is that this is more explicit about what it's doing.
It's a toss-up which is more readable / idiomatic; I prefer the OP version.
(They probably compile to the same thing, though I haven't checked.)
 using sprintf() is also excessive. Maybe:
   *buf = '0' + (expression);
   return 1;
That loses the '\n'; it's annoying when you cat a file and it doesn't end in a 
'\n', because it gloms onto your shell prompt.
sprintf isn't really that expensive, this isn't likely to be called very 
frequently.
 You may also need to check for buffer overrun.
In fact Documentation/filesystems/sysfs.txt says that show() should always use 
scnprintf() and that The buffer will always be PAGE_SIZE bytes in length.
So if we want to be consistent, it should be

return scnprintf(buf, PAGE_SIZE, %d\n, expression);

although it'd be rather surprising if either 0\n or 1\n were ever too big for 
PAGE_SIZE :grin:.
--
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html