> > > +/*
> > > + * klp_shadow_set() - initialize a shadow variable
> > > + * @shadow:      shadow variable to initialize
> > > + * @obj: pointer to parent object
> > > + * @id:          data identifier
> > > + * @data:        pointer to data to attach to parent
> > > + * @size:        size of attached data
> > > + */
> > > +static inline void klp_shadow_set(struct klp_shadow *shadow, void *obj,
> > > +                           unsigned long id, void *data, size_t size)
> > > +{
> > > + shadow->obj = obj;
> > > + shadow->id = id;
> > > +
> > > + if (data)
> > > +         memcpy(shadow->data, data, size);
> > > +}
> > > +
> > > +/**
> > > + * klp_shadow_add() - add a shadow variable to the hashtable
> > > + * @shadow:      shadow variable to add
> > > + */
> > > +static inline void klp_shadow_add(struct klp_shadow *shadow)
> > > +{
> > > + hash_add_rcu(klp_shadow_hash, &shadow->node,
> > > +              (unsigned long)shadow->obj);
> > > +}
> > 
> > It would be nice to add a comment that a caller must hold klp_shadow_lock 
> > spinlock.
> 
> Since shadow_match(), klp_shadow_set(), and klp_shadow_add() are all in
> the same boat, I can mention the lock for those functions as well. 

Yes, please.

> BTW,
> is there a convention to drop the "klp_" for static, local routines?  I
> should be consistent here.

Oh, I didn't notice missing "klp_" in shadow_match. We have a prefix 
everywhere, so add it, please.

Thanks,
Miroslav

Reply via email to