From e86c8696eb0bc62f4a4ae45df5715cee73533408 Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Wed, 17 Jun 2009 11:51:55 -0700 Subject: [PATCH] datapath: Make openvswitch_ioctl() have a single point of exit. This makes it easier to insert debug printk() calls in a single place if necessary, and conforms at least as well with Linux kernel style. --- datapath/datapath.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/datapath/datapath.c b/datapath/datapath.c index 7299cd17d..e545cda05 100644 --- a/datapath/datapath.c +++ b/datapath/datapath.c @@ -1344,24 +1344,28 @@ static long openvswitch_ioctl(struct file *f, unsigned int cmd, /* Handle commands with special locking requirements up front. */ switch (cmd) { case ODP_DP_CREATE: - return create_dp(dp_idx, (char __user *)argp); + err = create_dp(dp_idx, (char __user *)argp); + goto exit; case ODP_DP_DESTROY: - return destroy_dp(dp_idx); + err = destroy_dp(dp_idx); + goto exit; case ODP_PORT_ADD: - return add_port(dp_idx, (struct odp_port __user *)argp); + err = add_port(dp_idx, (struct odp_port __user *)argp); + goto exit; case ODP_PORT_DEL: err = get_user(port_no, (int __user *)argp); - if (err) - return err; - return del_port(dp_idx, port_no); + if (!err) + err = del_port(dp_idx, port_no); + goto exit; } dp = get_dp_locked(dp_idx); + err = -ENODEV; if (!dp) - return -ENODEV; + goto exit; switch (cmd) { case ODP_DP_STATS: @@ -1443,6 +1447,7 @@ static long openvswitch_ioctl(struct file *f, unsigned int cmd, break; } mutex_unlock(&dp->mutex); +exit: return err; } -- 2.43.0