Re: [PATCH RFC net-next v2 03/12] net: mdio: mdiobus_register: update validation test

From: Michael Walle
Date: Tue Jan 03 2023 - 05:22:14 EST


Hi Russell,

Am 2023-01-03 11:13, schrieb Russell King (Oracle):
On Wed, Dec 28, 2022 at 12:07:19AM +0100, Michael Walle wrote:
+ if (!bus || !bus->name)
+ return -EINVAL;
+
+ /* An access method always needs both read and write operations */
+ if ((bus->read && !bus->write) ||
+ (!bus->read && bus->write) ||
+ (bus->read_c45 && !bus->write_c45) ||
+ (!bus->read_c45 && bus->write_c45))

I wonder whether the following would be even more readable:

if (!bus->read != !bus->write || !bus->read_c45 != !bus->write_c45)

That's what Andrew had originally. But there was a comment from Sergey [1]
which I agree with. I had a hard time wrapping my head around that, so I
just listed all the possible bad cases.

I don't have a strong opinion, though.

which essentially asserts that the boolean of !method for the read and
write methods must match.

Maybe with that as a comment?

-michael

[1] https://lore.kernel.org/netdev/ae79823f-3697-feee-32e6-645c6f4b4e93@xxxxxx/