On Mon, Dec 30, 2019 at 02:03:29PM -0800, J Freyensee wrote: > > +#ifdef CONFIG_PROC_FS > > +static inline void pidns_proc_lock(struct pid_namespace *pid_ns) > > +{ > > + down_write(&pid_ns->rw_proc_mounts); > > +} > > + > > +static inline void pidns_proc_unlock(struct pid_namespace *pid_ns) > > +{ > > + up_write(&pid_ns->rw_proc_mounts); > > +} > > + > > +static inline void pidns_proc_lock_shared(struct pid_namespace *pid_ns) > > +{ > > + down_read(&pid_ns->rw_proc_mounts); > > +} > > + > > +static inline void pidns_proc_unlock_shared(struct pid_namespace *pid_ns) > > +{ > > + up_read(&pid_ns->rw_proc_mounts); > > +} > > +#else /* !CONFIG_PROC_FS */ > > + > Apologies for my newbie question. I couldn't help but notice all these > function calls are assuming that the parameter struct pid_namespace *pid_ns > will never be NULL. Is that a good assumption? These inline helpers are introduced to improve readability. They only make sense inside procfs. I don't think that defensive programming is useful here. -- Rgrds, legion