]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
drbd: drbd_adm_down(): Move valid resource name check to drbd_adm_prepare()
authorAndreas Gruenbacher <agruen@linbit.com>
Wed, 8 Jun 2011 23:26:16 +0000 (01:26 +0200)
committerPhilipp Reisner <philipp.reisner@linbit.com>
Mon, 17 Feb 2014 15:44:54 +0000 (16:44 +0100)
Signed-off-by: Andreas Gruenbacher <agruen@linbit.com>
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com>
drivers/block/drbd/drbd_nl.c

index b8eacccbdc5c26f14df78ab2a89e2e64275976c6..ddff39182a23784ded047107f3a13fc22a71aa8f 100644 (file)
@@ -221,6 +221,8 @@ static int drbd_adm_prepare(struct sk_buff *skb, struct genl_info *info,
        }
        if (!adm_ctx.connection && (flags & DRBD_ADM_NEED_RESOURCE)) {
                drbd_msg_put_info("unknown resource");
+               if (adm_ctx.resource_name)
+                       return ERR_RES_NOT_KNOWN;
                return ERR_INVALID_REQUEST;
        }
 
@@ -3355,17 +3357,12 @@ int drbd_adm_down(struct sk_buff *skb, struct genl_info *info)
        struct drbd_device *device;
        unsigned i;
 
-       retcode = drbd_adm_prepare(skb, info, 0);
+       retcode = drbd_adm_prepare(skb, info, DRBD_ADM_NEED_RESOURCE);
        if (!adm_ctx.reply_skb)
                return retcode;
        if (retcode != NO_ERROR)
                goto out;
 
-       if (!adm_ctx.connection) {
-               retcode = ERR_RES_NOT_KNOWN;
-               goto out;
-       }
-
        /* demote */
        idr_for_each_entry(&adm_ctx.connection->volumes, device, i) {
                retcode = drbd_set_role(device, R_SECONDARY, 0);