aboutsummaryrefslogtreecommitdiffstats
path: root/arch/um
diff options
context:
space:
mode:
Diffstat (limited to 'arch/um')
-rw-r--r--arch/um/drivers/ubd_kern.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/arch/um/drivers/ubd_kern.c b/arch/um/drivers/ubd_kern.c
index 8bd9204ac1ab..53c36d1770c5 100644
--- a/arch/um/drivers/ubd_kern.c
+++ b/arch/um/drivers/ubd_kern.c
@@ -788,14 +788,12 @@ static int ubd_id(char **str, int *start_out, int *end_out)
788 788
789static int ubd_remove(int n, char **error_out) 789static int ubd_remove(int n, char **error_out)
790{ 790{
791 struct gendisk *disk;
791 struct ubd *ubd_dev; 792 struct ubd *ubd_dev;
792 int err = -ENODEV; 793 int err = -ENODEV;
793 794
794 mutex_lock(&ubd_lock); 795 mutex_lock(&ubd_lock);
795 796
796 if(ubd_gendisk[n] == NULL)
797 goto out;
798
799 ubd_dev = &ubd_devs[n]; 797 ubd_dev = &ubd_devs[n];
800 798
801 if(ubd_dev->file == NULL) 799 if(ubd_dev->file == NULL)
@@ -806,9 +804,12 @@ static int ubd_remove(int n, char **error_out)
806 if(ubd_dev->count > 0) 804 if(ubd_dev->count > 0)
807 goto out; 805 goto out;
808 806
809 del_gendisk(ubd_gendisk[n]); 807 disk = ubd_gendisk[n];
810 put_disk(ubd_gendisk[n]); 808 ubd_gendisk[n] = NULL;
811 ubd_gendisk[n] = NULL; 809 if(disk != NULL){
810 del_gendisk(disk);
811 put_disk(disk);
812 }
812 813
813 if(fake_gendisk[n] != NULL){ 814 if(fake_gendisk[n] != NULL){
814 del_gendisk(fake_gendisk[n]); 815 del_gendisk(fake_gendisk[n]);