diff mbox series

[net-next,v3] net/tun: Call netdev notifiers

Message ID 20201116104121.20884-1-ms@dev.tdt.de
State Superseded
Headers show
Series [net-next,v3] net/tun: Call netdev notifiers | expand

Commit Message

Martin Schiller Nov. 16, 2020, 10:41 a.m. UTC
Call netdev notifiers before and after changing the device type.

Signed-off-by: Martin Schiller <ms@dev.tdt.de>
---

Change from v2:
use subject_prefix 'net-next' to fix 'fixes_present' issue

Change from v1:
fix 'subject_prefix' and 'checkpatch' warnings

---
 drivers/net/tun.c | 4 ++++
 1 file changed, 4 insertions(+)

Comments

Jakub Kicinski Nov. 18, 2020, 12:32 a.m. UTC | #1
On Mon, 16 Nov 2020 11:41:21 +0100 Martin Schiller wrote:
> Call netdev notifiers before and after changing the device type.
> 
> Signed-off-by: Martin Schiller <ms@dev.tdt.de>
> ---
> 
> Change from v2:
> use subject_prefix 'net-next' to fix 'fixes_present' issue
> 
> Change from v1:
> fix 'subject_prefix' and 'checkpatch' warnings
> 
> ---
>  drivers/net/tun.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/drivers/net/tun.c b/drivers/net/tun.c
> index 3d45d56172cb..2d9a00f41023 100644
> --- a/drivers/net/tun.c
> +++ b/drivers/net/tun.c
> @@ -3071,9 +3071,13 @@ static long __tun_chr_ioctl(struct file *file, unsigned int cmd,
>  				   "Linktype set failed because interface is up\n");
>  			ret = -EBUSY;
>  		} else {
> +			call_netdevice_notifiers(NETDEV_PRE_TYPE_CHANGE,
> +						 tun->dev);

This call may return an error (which has to be unpacked with
notifier_to_errno()).

>  			tun->dev->type = (int) arg;
>  			netif_info(tun, drv, tun->dev, "linktype set to %d\n",
>  				   tun->dev->type);
> +			call_netdevice_notifiers(NETDEV_POST_TYPE_CHANGE,
> +						 tun->dev);
>  			ret = 0;
>  		}
>  		break;
Martin Schiller Nov. 18, 2020, 5:22 a.m. UTC | #2
On 2020-11-18 01:32, Jakub Kicinski wrote:
> On Mon, 16 Nov 2020 11:41:21 +0100 Martin Schiller wrote:
>> Call netdev notifiers before and after changing the device type.
>> 
>> Signed-off-by: Martin Schiller <ms@dev.tdt.de>
>> ---
>> 
>> Change from v2:
>> use subject_prefix 'net-next' to fix 'fixes_present' issue
>> 
>> Change from v1:
>> fix 'subject_prefix' and 'checkpatch' warnings
>> 
>> ---
>>  drivers/net/tun.c | 4 ++++
>>  1 file changed, 4 insertions(+)
>> 
>> diff --git a/drivers/net/tun.c b/drivers/net/tun.c
>> index 3d45d56172cb..2d9a00f41023 100644
>> --- a/drivers/net/tun.c
>> +++ b/drivers/net/tun.c
>> @@ -3071,9 +3071,13 @@ static long __tun_chr_ioctl(struct file *file, 
>> unsigned int cmd,
>>  				   "Linktype set failed because interface is up\n");
>>  			ret = -EBUSY;
>>  		} else {
>> +			call_netdevice_notifiers(NETDEV_PRE_TYPE_CHANGE,
>> +						 tun->dev);
> 
> This call may return an error (which has to be unpacked with
> notifier_to_errno()).

OK, I'll fix that and send a v3 patch.

> 
>>  			tun->dev->type = (int) arg;
>>  			netif_info(tun, drv, tun->dev, "linktype set to %d\n",
>>  				   tun->dev->type);
>> +			call_netdevice_notifiers(NETDEV_POST_TYPE_CHANGE,
>> +						 tun->dev);
>>  			ret = 0;
>>  		}
>>  		break;
diff mbox series

Patch

diff --git a/drivers/net/tun.c b/drivers/net/tun.c
index 3d45d56172cb..2d9a00f41023 100644
--- a/drivers/net/tun.c
+++ b/drivers/net/tun.c
@@ -3071,9 +3071,13 @@  static long __tun_chr_ioctl(struct file *file, unsigned int cmd,
 				   "Linktype set failed because interface is up\n");
 			ret = -EBUSY;
 		} else {
+			call_netdevice_notifiers(NETDEV_PRE_TYPE_CHANGE,
+						 tun->dev);
 			tun->dev->type = (int) arg;
 			netif_info(tun, drv, tun->dev, "linktype set to %d\n",
 				   tun->dev->type);
+			call_netdevice_notifiers(NETDEV_POST_TYPE_CHANGE,
+						 tun->dev);
 			ret = 0;
 		}
 		break;