Hello,
On Thu, 12 Jul 2012, Pablo Neira Ayuso wrote:
> > +struct ip_vs_app *register_ip_vs_app(struct net *net, struct ip_vs_app
> > *app)
> > {
> > struct netns_ipvs *ipvs = net_ipvs(net);
> > - /* increase the module use count */
> > - ip_vs_use_count_inc();
> > + struct ip_vs_app *a;
> > + int err = 0;
> > +
> > + if (!ipvs)
> > + return ERR_PTR(-ENOENT);
> >
> > mutex_lock(&__ip_vs_app_mutex);
> >
> > - list_add(&app->a_list, &ipvs->app_list);
> > + list_for_each_entry(a, &ipvs->app_list, a_list) {
> > + if (!strcmp(app->name, a->name)) {
> > + err = -EEXIST;
> > + break;
> > + }
> > + }
> > + if (!err) {
> > + a = kmemdup(app, sizeof(*app), GFP_KERNEL);
> > + if (!a)
> > + err = -ENOMEM;
> > + }
> > + if (!err) {
> > + INIT_LIST_HEAD(&a->incs_list);
> > + list_add(&a->a_list, &ipvs->app_list);
> > + /* increase the module use count */
> > + ip_vs_use_count_inc();
> > + }
>
> I think this code will look better if you use something like:
>
> + if (!strcmp(app->name, a->name)) {
> + err = -EEXIST;
> + goto err_unlock;
> + }
>
> err_unlock:
> mutex_unlock(...)
>
> >
> > mutex_unlock(&__ip_vs_app_mutex);
> >
> > - return 0;
> > + if (err)
> > + return ERR_PTR(err);
> > + return a;
>
> For this three lines above, you can use:
>
> return err ? return ERR_PTR(err) : a;
Good point, sending v2 ...
Regards
--
Julian Anastasov <ja@xxxxxx>
--
To unsubscribe from this list: send the line "unsubscribe lvs-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
|