lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Wed, 12 Dec 2018 14:12:14 +0100
From:   Ivan Vecera <ivecera@...hat.com>
To:     Petr Machata <petrm@...lanox.com>,
        "netdev@...r.kernel.org" <netdev@...r.kernel.org>
Cc:     Jiri Pirko <jiri@...lanox.com>, Ido Schimmel <idosch@...lanox.com>,
        "davem@...emloft.net" <davem@...emloft.net>
Subject: Re: [PATCH net-next 4/9] net: switchdev: Add extack to struct
 switchdev_notifier_info

On 12. 12. 18 12:52, Petr Machata wrote:
> In order to pass extack to the drivers that need it, add an extack field
> to struct switchdev_notifier_info, and an extack argument to the
> function call_switchdev_blocking_notifiers(). Also add a helper function
> switchdev_notifier_info_to_extack().
> 
> Signed-off-by: Petr Machata <petrm@...lanox.com>
> Acked-by: Jiri Pirko <jiri@...lanox.com>
> ---
>   drivers/net/vxlan.c       |  1 +
>   include/net/switchdev.h   | 13 +++++++++++--
>   net/switchdev/switchdev.c |  7 +++++--
>   3 files changed, 17 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c
> index b56ef684ecac..49d4b5854c62 100644
> --- a/drivers/net/vxlan.c
> +++ b/drivers/net/vxlan.c
> @@ -364,6 +364,7 @@ static void vxlan_fdb_switchdev_notifier_info(const struct vxlan_dev *vxlan,
>   			    struct switchdev_notifier_vxlan_fdb_info *fdb_info)
>   {
>   	fdb_info->info.dev = vxlan->dev;
> +	fdb_info->info.extack = NULL;
>   	fdb_info->remote_ip = rd->remote_ip;
>   	fdb_info->remote_port = rd->remote_port;
>   	fdb_info->remote_vni = rd->remote_vni;
> diff --git a/include/net/switchdev.h b/include/net/switchdev.h
> index 69016305ad58..4facfa6775e8 100644
> --- a/include/net/switchdev.h
> +++ b/include/net/switchdev.h
> @@ -149,6 +149,7 @@ enum switchdev_notifier_type {
>   
>   struct switchdev_notifier_info {
>   	struct net_device *dev;
> +	struct netlink_ext_ack *extack;
>   };
>   
>   struct switchdev_notifier_fdb_info {
> @@ -172,6 +173,12 @@ switchdev_notifier_info_to_dev(const struct switchdev_notifier_info *info)
>   	return info->dev;
>   }
>   
> +static inline struct netlink_ext_ack *
> +switchdev_notifier_info_to_extack(const struct switchdev_notifier_info *info)
> +{
> +	return info->extack;
> +}
> +
>   #ifdef CONFIG_NET_SWITCHDEV
>   
>   void switchdev_deferred_process(void);
> @@ -193,7 +200,8 @@ int call_switchdev_notifiers(unsigned long val, struct net_device *dev,
>   int register_switchdev_blocking_notifier(struct notifier_block *nb);
>   int unregister_switchdev_blocking_notifier(struct notifier_block *nb);
>   int call_switchdev_blocking_notifiers(unsigned long val, struct net_device *dev,
> -				      struct switchdev_notifier_info *info);
> +				      struct switchdev_notifier_info *info,
> +				      struct netlink_ext_ack *extack);
>   
>   void switchdev_port_fwd_mark_set(struct net_device *dev,
>   				 struct net_device *group_dev,
> @@ -278,7 +286,8 @@ unregister_switchdev_blocking_notifier(struct notifier_block *nb)
>   static inline int
>   call_switchdev_blocking_notifiers(unsigned long val,
>   				  struct net_device *dev,
> -				  struct switchdev_notifier_info *info)
> +				  struct switchdev_notifier_info *info,
> +				  struct netlink_ext_ack *extack)
>   {
>   	return NOTIFY_DONE;
>   }
> diff --git a/net/switchdev/switchdev.c b/net/switchdev/switchdev.c
> index cb20669bf6ce..aa84acfb6632 100644
> --- a/net/switchdev/switchdev.c
> +++ b/net/switchdev/switchdev.c
> @@ -368,7 +368,7 @@ static int switchdev_port_obj_notify(enum switchdev_notifier_type nt,
>   		.handled = false,
>   	};
>   
> -	rc = call_switchdev_blocking_notifiers(nt, dev, &obj_info.info);
> +	rc = call_switchdev_blocking_notifiers(nt, dev, &obj_info.info, extack);
>   	err = notifier_to_errno(rc);
>   	if (err) {
>   		WARN_ON(!obj_info.handled);
> @@ -559,6 +559,7 @@ int call_switchdev_notifiers(unsigned long val, struct net_device *dev,
>   			     struct switchdev_notifier_info *info)
>   {
>   	info->dev = dev;
> +	info->extack = NULL;
>   	return atomic_notifier_call_chain(&switchdev_notif_chain, val, info);
>   }
>   EXPORT_SYMBOL_GPL(call_switchdev_notifiers);
> @@ -580,9 +581,11 @@ int unregister_switchdev_blocking_notifier(struct notifier_block *nb)
>   EXPORT_SYMBOL_GPL(unregister_switchdev_blocking_notifier);
>   
>   int call_switchdev_blocking_notifiers(unsigned long val, struct net_device *dev,
> -				      struct switchdev_notifier_info *info)
> +				      struct switchdev_notifier_info *info,
> +				      struct netlink_ext_ack *extack)
>   {
>   	info->dev = dev;
> +	info->extack = extack;
>   	return blocking_notifier_call_chain(&switchdev_blocking_notif_chain,
>   					    val, info);
>   }
> 


Acked-by: Ivan Vecera <ivecera@...hat.com>

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ