On Tue, Nov 19, 2024 at 09:07:45AM -0800, Breno Leitao wrote:
> > >  #endif
> > >   bool                    enabled;
> > >   bool                    extended;
> > 
> > > + /* Check if CPU NR should be populated, and append it to the user
> > > +  * dictionary.
> > > +  */
> > > + if (child_count < MAX_USERDATA_ITEMS && nt->userdata_auto & AUTO_CPU_NR)
> > > +         scnprintf(&nt->userdata_complete[complete_idx],
> > > +                   MAX_USERDATA_ENTRY_LENGTH, " cpu=%u\n",
> > > +                   raw_smp_processor_id());
> > 
> > I guess it may be tricky for backward compat, but shouldn't we return
> > an error rather than silently skip?
> 
> yes, this should be easy to do, in fact. Probably return -E2BIG to
> userspace when trying to update the entry. I thought about something as
> the following patch, and piggy-back into it.

Back to this topic, in fact, this is not needed at all. 

The configfs make item helper (userdatum_make_item()) checks for
exceeding entries, and fails if an additional entry is created.


        static struct config_item *userdatum_make_item(struct config_group 
*group,
                                                        const char *name)
        {
                ....
                child_count = list_count_nodes(&nt->userdata_group.cg_children);
                if (child_count >= MAX_USERDATA_ITEMS)
                        return ERR_PTR(-ENOSPC);


I've sent an additional test for this mechanism, and make the check in
update_userdata() a warning instead of just silently dropping the entry.

https://lore.kernel.org/all/20241204-netcons_overflow_test-v1-0-a85a8d0ac...@debian.org/

Reply via email to