commit e2d4945959773df738afe9def357f1efda11428e Author: Aaron LI <a...@aaronly.me> Date: Sat Aug 4 20:30:04 2018 +0800
if_clone: Fix if_clone_destroy() with renamed cloned interface Since the interface can be renamed (SIOCSIFNAME), it's very wrong for if_clone_destroy() to determine the unit number from interface name, which has the following two serious problems: (1) One may only change the unit number in the interface name, then trying to destroy the interface will panic the system. e.g., % ifconfig tap0 create % ifconfig tap0 name tap99999999 % ifconfig tap99999999 destroy -> panic: if_clone_destroy: bit is already cleared (2) The renamed interface cannot be destroyed anymore. e.g., % ifconfig tap0 create % ifconfig tap0 name test % ifconfig test destroy -> ifconfig: SIOCIFDESTROY: Invalid argument Fix the code to use the 'if_dunit' as the correct interface unit number. Thanks to Jason A. Donenfeld <ja...@zx2c4.com> and Brady O'Brien <brady.obrien...@gmail.com> for pointing out the above problem (1). Summary of changes: sys/net/if_clone.c | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/e2d4945959773df738afe9def357f1efda11428e -- DragonFly BSD source repository