All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Laight <david.laight.linux@gmail.com>
To: Uday Shankar <ushankar@purestorage.com>
Cc: "Breno Leitao" <leitao@debian.org>,
	"Andrew Lunn" <andrew+netdev@lunn.ch>,
	"David S. Miller" <davem@davemloft.net>,
	"Eric Dumazet" <edumazet@google.com>,
	"Jakub Kicinski" <kuba@kernel.org>,
	"Paolo Abeni" <pabeni@redhat.com>,
	"Srinivas Kandagatla" <srinivas.kandagatla@linaro.org>,
	"Rafał Miłecki" <rafal@milecki.pl>,
	"Simon Horman" <horms@kernel.org>,
	"Andrew Morton" <akpm@linux-foundation.org>,
	"Johannes Berg" <johannes@sipsolutions.net>,
	"Jonathan Corbet" <corbet@lwn.net>,
	netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-wireless@vger.kernel.org, linux-doc@vger.kernel.org,
	"Michal Swiatkowski" <michal.swiatkowski@linux.intel.com>
Subject: Re: [PATCH net-next v5 1/2] net, treewide: define and use MAC_ADDR_STR_LEN
Date: Fri, 21 Feb 2025 13:17:50 +0000	[thread overview]
Message-ID: <20250221131750.0630c720@pumpkin> (raw)
In-Reply-To: <20250220-netconsole-v5-1-4aeafa71debf@purestorage.com>

On Thu, 20 Feb 2025 18:29:20 -0700
Uday Shankar <ushankar@purestorage.com> wrote:

> There are a few places in the tree which compute the length of the
> string representation of a MAC address as 3 * ETH_ALEN - 1. Define a
> constant for this and use it where relevant. No functionality changes
> are expected.

The fact that you have to keep adding 1 or 2 is a good indication that
it really isn't a good idea.

	David

> 
> Signed-off-by: Uday Shankar <ushankar@purestorage.com>
> Reviewed-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
> Acked-by: Johannes Berg <johannes@sipsolutions.net>
> ---
>  drivers/net/netconsole.c           | 2 +-
>  drivers/nvmem/brcm_nvram.c         | 2 +-
>  drivers/nvmem/layouts/u-boot-env.c | 2 +-
>  include/linux/if_ether.h           | 3 +++
>  lib/net_utils.c                    | 4 +---
>  net/mac80211/debugfs_sta.c         | 7 ++++---
>  6 files changed, 11 insertions(+), 9 deletions(-)
> 
> diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c
> index f77eddf221850fe2778cd479e49c91ad695aba3c..12699831e3c9fdbafd4862a339aea4ef04cf522b 100644
> --- a/drivers/net/netconsole.c
> +++ b/drivers/net/netconsole.c
> @@ -721,7 +721,7 @@ static ssize_t remote_mac_store(struct config_item *item, const char *buf,
>  
>  	if (!mac_pton(buf, remote_mac))
>  		goto out_unlock;
> -	if (buf[3 * ETH_ALEN - 1] && buf[3 * ETH_ALEN - 1] != '\n')
> +	if (buf[MAC_ADDR_STR_LEN] && buf[MAC_ADDR_STR_LEN] != '\n')
>  		goto out_unlock;
>  	memcpy(nt->np.remote_mac, remote_mac, ETH_ALEN);
>  
> diff --git a/drivers/nvmem/brcm_nvram.c b/drivers/nvmem/brcm_nvram.c
> index b810df727b446b1762a1851750f743e0de6e8788..b4cf245fb2467d281111001bb7ed8db5993a09b2 100644
> --- a/drivers/nvmem/brcm_nvram.c
> +++ b/drivers/nvmem/brcm_nvram.c
> @@ -100,7 +100,7 @@ static int brcm_nvram_read_post_process_macaddr(void *context, const char *id, i
>  {
>  	u8 mac[ETH_ALEN];
>  
> -	if (bytes != 3 * ETH_ALEN - 1)
> +	if (bytes != MAC_ADDR_STR_LEN)
>  		return -EINVAL;
>  
>  	if (!mac_pton(buf, mac))
> diff --git a/drivers/nvmem/layouts/u-boot-env.c b/drivers/nvmem/layouts/u-boot-env.c
> index 731e6f4f12b2bf28e4547d128954a095545ad461..436426d4e8f910b51b92f88acddfbb40d374587a 100644
> --- a/drivers/nvmem/layouts/u-boot-env.c
> +++ b/drivers/nvmem/layouts/u-boot-env.c
> @@ -37,7 +37,7 @@ static int u_boot_env_read_post_process_ethaddr(void *context, const char *id, i
>  {
>  	u8 mac[ETH_ALEN];
>  
> -	if (bytes != 3 * ETH_ALEN - 1)
> +	if (bytes != MAC_ADDR_STR_LEN)
>  		return -EINVAL;
>  
>  	if (!mac_pton(buf, mac))
> diff --git a/include/linux/if_ether.h b/include/linux/if_ether.h
> index 8a9792a6427ad9cf58b50c79cbfe185615800dcb..61b7335aa037c7232a0caa45572043057c02dde3 100644
> --- a/include/linux/if_ether.h
> +++ b/include/linux/if_ether.h
> @@ -19,6 +19,9 @@
>  #include <linux/skbuff.h>
>  #include <uapi/linux/if_ether.h>
>  
> +/* XX:XX:XX:XX:XX:XX */
> +#define MAC_ADDR_STR_LEN (3 * ETH_ALEN - 1)
> +
>  static inline struct ethhdr *eth_hdr(const struct sk_buff *skb)
>  {
>  	return (struct ethhdr *)skb_mac_header(skb);
> diff --git a/lib/net_utils.c b/lib/net_utils.c
> index 42bb0473fb22f977409f7a6792bb1340f4e911c3..215cda672fee1b5a029c2b61529c6813c0edab11 100644
> --- a/lib/net_utils.c
> +++ b/lib/net_utils.c
> @@ -7,11 +7,9 @@
>  
>  bool mac_pton(const char *s, u8 *mac)
>  {
> -	size_t maxlen = 3 * ETH_ALEN - 1;
>  	int i;
>  
> -	/* XX:XX:XX:XX:XX:XX */
> -	if (strnlen(s, maxlen) < maxlen)
> +	if (strnlen(s, MAC_ADDR_STR_LEN) < MAC_ADDR_STR_LEN)
>  		return false;
>  
>  	/* Don't dirty result unless string is valid MAC. */
> diff --git a/net/mac80211/debugfs_sta.c b/net/mac80211/debugfs_sta.c
> index a67a9d3160086ac492d77092a0c8a74d2384b28c..a8948f4d983e5edee45d90ad267582657ed38e38 100644
> --- a/net/mac80211/debugfs_sta.c
> +++ b/net/mac80211/debugfs_sta.c
> @@ -457,11 +457,12 @@ static ssize_t link_sta_addr_read(struct file *file, char __user *userbuf,
>  				  size_t count, loff_t *ppos)
>  {
>  	struct link_sta_info *link_sta = file->private_data;
> -	u8 mac[3 * ETH_ALEN + 1];
> +	u8 mac[MAC_ADDR_STR_LEN + 2];
>  
>  	snprintf(mac, sizeof(mac), "%pM\n", link_sta->pub->addr);
>  
> -	return simple_read_from_buffer(userbuf, count, ppos, mac, 3 * ETH_ALEN);
> +	return simple_read_from_buffer(userbuf, count, ppos, mac,
> +				       MAC_ADDR_STR_LEN + 1);
>  }
>  
>  LINK_STA_OPS(addr);
> @@ -1240,7 +1241,7 @@ void ieee80211_sta_debugfs_add(struct sta_info *sta)
>  	struct ieee80211_local *local = sta->local;
>  	struct ieee80211_sub_if_data *sdata = sta->sdata;
>  	struct dentry *stations_dir = sta->sdata->debugfs.subdir_stations;
> -	u8 mac[3*ETH_ALEN];
> +	u8 mac[MAC_ADDR_STR_LEN + 1];
>  
>  	if (!stations_dir)
>  		return;
> 


  parent reply	other threads:[~2025-02-21 13:17 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-02-21  1:29 [PATCH net-next v5 0/2] netconsole: allow selection of egress interface via MAC address Uday Shankar
2025-02-21  1:29 ` [PATCH net-next v5 1/2] net, treewide: define and use MAC_ADDR_STR_LEN Uday Shankar
2025-02-21  9:37   ` Breno Leitao
2025-02-21 13:17   ` David Laight [this message]
2025-02-21 19:46     ` Uday Shankar
2025-02-25 14:40   ` Simon Horman
2025-02-21  1:29 ` [PATCH net-next v5 2/2] netconsole: allow selection of egress interface via MAC address Uday Shankar
2025-02-25 14:40   ` Simon Horman
2025-03-07 20:11     ` Uday Shankar
2025-03-11 11:13       ` Simon Horman
2025-03-12 19:37         ` Jakub Kicinski
2025-03-17 20:43           ` Uday Shankar

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250221131750.0630c720@pumpkin \
    --to=david.laight.linux@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=andrew+netdev@lunn.ch \
    --cc=corbet@lwn.net \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=horms@kernel.org \
    --cc=johannes@sipsolutions.net \
    --cc=kuba@kernel.org \
    --cc=leitao@debian.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=michal.swiatkowski@linux.intel.com \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=rafal@milecki.pl \
    --cc=srinivas.kandagatla@linaro.org \
    --cc=ushankar@purestorage.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.