[systemd-devel] [RFC][PATCH 1/2] resolve: resolved-manager: Avoid null dereference

Lennart Poettering lennart at poettering.net
Wed Oct 22 13:39:25 PDT 2014


On Wed, 22.10.14 22:12, Tom Gundersen (teg at jklm.no) wrote:

> On Wed, Oct 22, 2014 at 12:19 PM, Lennart Poettering
> <lennart at poettering.net> wrote:
> > On Sat, 13.09.14 20:40, Tom Gundersen (teg at jklm.no) wrote:
> >
> >> Yeah, this could happen. It so happens that the loopback link will
> >> always have ifindex 1, so I guess we could just fall back to checking
> >> for that if we don't have the real flags.
> >
> > Is that true even in network namespaces? Is this really exported API?
> > I really don't want to rely on behaviour here that is not considered
> > official API of Linux.
> >
> > If it is safe API of Linux, then we really should drop
> > manager_ifindex_is_loopback() entirely, and just always compare the
> > ifindex.
> >
> > Anyone has some pointers where this is made API?
> 
> We may want to ask the kernel guys to export LOOPBACK_IFINDEX, as it
> is not at the moment. However, I think relying on it is fine even
> without that as the kernel will BUG_ON if "lo" does not have ifindex
> 1[0], and no other netdev can have ifindex 1[1]:
> 
>         /* The loopback device is special if any other network devices
>          * is present in a network namespace the loopback device must
>          * be present.

BTW, I changed resolved now to only use LOOPBACK_IFINDEX when
identifying loopback devices, and dropped the code that checks for
IFF_LOOPBACK. That should simplify things a bit. 

I also documented the situation around LOOPBACK_IFINDEX in the
comments.

Lennart

-- 
Lennart Poettering, Red Hat


More information about the systemd-devel mailing list