return PTR_ERR(p);
 
        name = getname(specialfile);
-       error = PTR_ERR(name);
        if (IS_ERR(name)) {
+               error = PTR_ERR(name);
                name = NULL;
                goto bad_swap_2;
        }
        swap_file = filp_open(name, O_RDWR|O_LARGEFILE, 0);
-       error = PTR_ERR(swap_file);
        if (IS_ERR(swap_file)) {
+               error = PTR_ERR(swap_file);
                swap_file = NULL;
                goto bad_swap_2;
        }
        mapping = swap_file->f_mapping;
        inode = mapping->host;
 
-       error = -EBUSY;
        for (i = 0; i < nr_swapfiles; i++) {
                struct swap_info_struct *q = swap_info[i];
 
                if (q == p || !q->swap_file)
                        continue;
-               if (mapping == q->swap_file->f_mapping)
+               if (mapping == q->swap_file->f_mapping) {
+                       error = -EBUSY;
                        goto bad_swap;
+               }
        }
 
-       error = -EINVAL;
        if (S_ISBLK(inode->i_mode)) {
                bdev = bdgrab(I_BDEV(inode));
                error = blkdev_get(bdev, FMODE_READ | FMODE_WRITE | FMODE_EXCL,
                        goto bad_swap;
                }
        } else {
+               error = -EINVAL;
                goto bad_swap;
        }