diff mbox series

[net-next] ethtool: ioctl: account for sopass diff in set_wol

Message ID 1686605822-34544-1-git-send-email-justin.chen@broadcom.com (mailing list archive)
State Accepted
Commit 2bddad9ec65a925da4ab4f73a9377d80540ca67b
Delegated to: Netdev Maintainers
Headers show
Series [net-next] ethtool: ioctl: account for sopass diff in set_wol | expand

Checks

Context Check Description
netdev/series_format success Single patches do not need cover letters
netdev/tree_selection success Clearly marked for net-next
netdev/fixes_present success Fixes tag not required for -next series
netdev/header_inline success No static functions without inline keyword in header files
netdev/build_32bit success Errors and warnings before: 10 this patch: 10
netdev/cc_maintainers success CCed 10 of 10 maintainers
netdev/build_clang success Errors and warnings before: 8 this patch: 8
netdev/verify_signedoff success Signed-off-by tag matches author and committer
netdev/deprecated_api success None detected
netdev/check_selftest success No net selftest shell script
netdev/verify_fixes success Fixes tag looks correct
netdev/build_allmodconfig_warn success Errors and warnings before: 10 this patch: 10
netdev/checkpatch success total: 0 errors, 0 warnings, 0 checks, 9 lines checked
netdev/kdoc success Errors and warnings before: 0 this patch: 0
netdev/source_inline success Was 0 now: 0

Commit Message

Justin Chen June 12, 2023, 9:37 p.m. UTC
sopass won't be set if wolopt doesn't change. This means the following
will fail to set the correct sopass.
ethtool -s eth0 wol s sopass 11:22:33:44:55:66
ethtool -s eth0 wol s sopass 22:44:55:66:77:88

Make sure we call into the driver layer set_wol if sopass is different.

Fixes: 55b24334c0f2 ("ethtool: ioctl: improve error checking for set_wol")
Signed-off-by: Justin Chen <justin.chen@broadcom.com>
---

Note: Tagged "Fixes" patch has not hit rc yet.

 net/ethtool/ioctl.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Andrew Lunn June 12, 2023, 10:28 p.m. UTC | #1
On Mon, Jun 12, 2023 at 02:37:00PM -0700, Justin Chen wrote:
> sopass won't be set if wolopt doesn't change. This means the following
> will fail to set the correct sopass.
> ethtool -s eth0 wol s sopass 11:22:33:44:55:66
> ethtool -s eth0 wol s sopass 22:44:55:66:77:88
> 
> Make sure we call into the driver layer set_wol if sopass is different.
> 
> Fixes: 55b24334c0f2 ("ethtool: ioctl: improve error checking for set_wol")
> Signed-off-by: Justin Chen <justin.chen@broadcom.com>
> ---
> 
> Note: Tagged "Fixes" patch has not hit rc yet.
> 
>  net/ethtool/ioctl.c | 3 ++-

Hi Justin

Does the netlink version get this correct?

And just for my own curiosity, why are you so interested in the ioctl
version, which is deprecated and not used by modern versions of
ethtool?

	Andrew
Justin Chen June 12, 2023, 11 p.m. UTC | #2
On 6/12/23 3:28 PM, Andrew Lunn wrote:
> On Mon, Jun 12, 2023 at 02:37:00PM -0700, Justin Chen wrote:
>> sopass won't be set if wolopt doesn't change. This means the following
>> will fail to set the correct sopass.
>> ethtool -s eth0 wol s sopass 11:22:33:44:55:66
>> ethtool -s eth0 wol s sopass 22:44:55:66:77:88
>>
>> Make sure we call into the driver layer set_wol if sopass is different.
>>
>> Fixes: 55b24334c0f2 ("ethtool: ioctl: improve error checking for set_wol")
>> Signed-off-by: Justin Chen <justin.chen@broadcom.com>
>> ---
>>
>> Note: Tagged "Fixes" patch has not hit rc yet.
>>
>>   net/ethtool/ioctl.c | 3 ++-
> 
> Hi Justin
> 
> Does the netlink version get this correct?
>

Yup netlink gets this correct

> And just for my own curiosity, why are you so interested in the ioctl
> version, which is deprecated and not used by modern versions of
> ethtool?
>
No particular reason. I was working on another driver and was planning 
to remove the set_wol error checking in the driver layer when I realized 
netlink set_wol was already doing it. Then on further inspection I 
noticed the ioctl version doesn't do the same thing.

Justin

> 	Andrew
patchwork-bot+netdevbpf@kernel.org June 14, 2023, 5:10 a.m. UTC | #3
Hello:

This patch was applied to netdev/net-next.git (main)
by Jakub Kicinski <kuba@kernel.org>:

On Mon, 12 Jun 2023 14:37:00 -0700 you wrote:
> sopass won't be set if wolopt doesn't change. This means the following
> will fail to set the correct sopass.
> ethtool -s eth0 wol s sopass 11:22:33:44:55:66
> ethtool -s eth0 wol s sopass 22:44:55:66:77:88
> 
> Make sure we call into the driver layer set_wol if sopass is different.
> 
> [...]

Here is the summary with links:
  - [net-next] ethtool: ioctl: account for sopass diff in set_wol
    https://git.kernel.org/netdev/net-next/c/2bddad9ec65a

You are awesome, thank you!
diff mbox series

Patch

diff --git a/net/ethtool/ioctl.c b/net/ethtool/ioctl.c
index 37b582225854..4a51e0ec295c 100644
--- a/net/ethtool/ioctl.c
+++ b/net/ethtool/ioctl.c
@@ -1452,7 +1452,8 @@  static int ethtool_set_wol(struct net_device *dev, char __user *useraddr)
 	if (wol.wolopts & ~cur_wol.supported)
 		return -EINVAL;
 
-	if (wol.wolopts == cur_wol.wolopts)
+	if (wol.wolopts == cur_wol.wolopts &&
+	    !memcmp(wol.sopass, cur_wol.sopass, sizeof(wol.sopass)))
 		return 0;
 
 	ret = dev->ethtool_ops->set_wol(dev, &wol);