Date: Fri, 20 Jan 2023 10:12:52 -0700 From: Alan Somers <asomers@freebsd.org> To: Gleb Smirnoff <glebius@freebsd.org> Cc: Alexander Chernikov <melifaro@freebsd.org>, "Danilo G. Baio" <dbaio@freebsd.org>, dev-commits-src-all@freebsd.org Subject: Re: git: 2c24ad3377a6 - main - ifconfig: abort if loading a module fails other than for ENOENT Message-ID: <CAOtMX2jLj9AK3mrNP_de6GONSSBb4csEuTRWLO2wjdGXPdUeuQ@mail.gmail.com> In-Reply-To: <Y8rF/IkQwllzGVhJ@cell.glebi.us> References: <202301091857.309Iv87L068285@gitrepo.freebsd.org> <2f4e4ccf-b19a-4f8f-a9e0-72298e500d7c@app.fastmail.com> <CAOtMX2hv182P2HTAPkbYDZiwNxkV2-C%2BWp2%2BL0SpfDpqn2Zccw@mail.gmail.com> <1E9FAE83-B5C2-4E1F-8D04-CF4F477F76C7@freebsd.org> <Y8rF/IkQwllzGVhJ@cell.glebi.us>
next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, Jan 20, 2023 at 9:49 AM Gleb Smirnoff <glebius@freebsd.org> wrote: > > On Fri, Jan 20, 2023 at 11:04:33AM +0000, Alexander Chernikov wrote: > A> I think another question is that if if should be done by ifconfig(8) a= t all. Kernel can take care of trying to load the required modules, checkin= g the privileges. > A> I=E2=80=99m considering adding such code for the netlink-based interfa= ce creation. > > This is already done in netgraph, but I won't call this solution a > pretty one. You ask kernel to do some network related ioctl(2), but > it actually does kldload(2). > > At what stage of the syscall we understand that kldload(2) needs to > be done? Are we free of network locks at this stage? Cause kldload > will take a very different set of locks, possibly creating a LOR, > and in an edge case will go into NFS taking network locks. > > -- > Gleb Smirnoff ifconfig tries to load a KLD preemptively, long before it does the hard work (cloning an interface or something). Trying to teach the kernel to load the module on-demand would be hard, we would probably have to do it in many different places.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAOtMX2jLj9AK3mrNP_de6GONSSBb4csEuTRWLO2wjdGXPdUeuQ>