Call netdev notifiers before and after changing the device type.
Signed-off-by: Martin Schiller <[email protected]>
---
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);
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;
--
2.20.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 <[email protected]>
> ---
>
> 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;
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 <[email protected]>
>> ---
>>
>> 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;