return ret;
 }
 
-void ramzswap_ioctl_get_stats(struct ramzswap *rzs,
+static void ramzswap_ioctl_get_stats(struct ramzswap *rzs,
                        struct ramzswap_ioctl_stats *s)
 {
        strncpy(s->backing_swap_name, rzs->backing_swap_name,
                        goto bad_param;
                }
                disksize = i_size_read(inode);
+               /*
+                * Can happen if user gives an extended partition as
+                * backing swap or simply a bad disk.
+                */
+               if (!disksize) {
+                       pr_err("Error reading backing swap size.\n");
+                       goto bad_param;
+               }
        } else if (S_ISREG(inode->i_mode)) {
                bdev = inode->i_sb->s_bdev;
                if (IS_SWAPFILE(inode)) {
        rzs->swap_file = swap_file;
        rzs->backing_swap = bdev;
        rzs->disksize = disksize;
-       BUG_ON(!rzs->disksize);
 
        return 0;
 
  * Map logical page number 'pagenum' to physical page number
  * on backing swap device. For block device, this is a nop.
  */
-u32 map_backing_swap_page(struct ramzswap *rzs, u32 pagenum)
+static u32 map_backing_swap_page(struct ramzswap *rzs, u32 pagenum)
 {
        u32 skip_pages, entries_per_page;
        size_t delta, se_offset, skipped;
        return 0;
 }
 
-
 /*
  * Called when request page is not present in ramzswap.
  * Its either in backing swap device (if present) or
        return 0;
 }
 
-
 /*
  * Check if request is within bounds and page aligned.
  */
                        bd_release(rzs->backing_swap);
                filp_close(rzs->swap_file, NULL);
                rzs->backing_swap = NULL;
+               memset(rzs->backing_swap_name, 0, MAX_SWAP_NAME_LEN);
        }
 
        /* Reset stats */