@@ -1225,28 +1225,16 @@ static int loop_clr_fd(struct loop_device *lo)
12251225}
12261226
12271227static int
1228- loop_set_status (struct loop_device * lo , blk_mode_t mode ,
1229- struct block_device * bdev , const struct loop_info64 * info )
1228+ loop_set_status (struct loop_device * lo , const struct loop_info64 * info )
12301229{
12311230 int err ;
12321231 bool partscan = false;
12331232 bool size_changed = false;
12341233 unsigned int memflags ;
12351234
1236- /*
1237- * If we don't hold exclusive handle for the device, upgrade to it
1238- * here to avoid changing device under exclusive owner.
1239- */
1240- if (!(mode & BLK_OPEN_EXCL )) {
1241- err = bd_prepare_to_claim (bdev , loop_set_status , NULL );
1242- if (err )
1243- goto out_reread_partitions ;
1244- }
1245-
12461235 err = mutex_lock_killable (& lo -> lo_mutex );
12471236 if (err )
1248- goto out_abort_claiming ;
1249-
1237+ return err ;
12501238 if (lo -> lo_state != Lo_bound ) {
12511239 err = - ENXIO ;
12521240 goto out_unlock ;
@@ -1285,10 +1273,6 @@ loop_set_status(struct loop_device *lo, blk_mode_t mode,
12851273 }
12861274out_unlock :
12871275 mutex_unlock (& lo -> lo_mutex );
1288- out_abort_claiming :
1289- if (!(mode & BLK_OPEN_EXCL ))
1290- bd_abort_claiming (bdev , loop_set_status );
1291- out_reread_partitions :
12921276 if (partscan )
12931277 loop_reread_partitions (lo );
12941278
@@ -1368,29 +1352,25 @@ loop_info64_to_old(const struct loop_info64 *info64, struct loop_info *info)
13681352}
13691353
13701354static int
1371- loop_set_status_old (struct loop_device * lo , blk_mode_t mode ,
1372- struct block_device * bdev ,
1373- const struct loop_info __user * arg )
1355+ loop_set_status_old (struct loop_device * lo , const struct loop_info __user * arg )
13741356{
13751357 struct loop_info info ;
13761358 struct loop_info64 info64 ;
13771359
13781360 if (copy_from_user (& info , arg , sizeof (struct loop_info )))
13791361 return - EFAULT ;
13801362 loop_info64_from_old (& info , & info64 );
1381- return loop_set_status (lo , mode , bdev , & info64 );
1363+ return loop_set_status (lo , & info64 );
13821364}
13831365
13841366static int
1385- loop_set_status64 (struct loop_device * lo , blk_mode_t mode ,
1386- struct block_device * bdev ,
1387- const struct loop_info64 __user * arg )
1367+ loop_set_status64 (struct loop_device * lo , const struct loop_info64 __user * arg )
13881368{
13891369 struct loop_info64 info64 ;
13901370
13911371 if (copy_from_user (& info64 , arg , sizeof (struct loop_info64 )))
13921372 return - EFAULT ;
1393- return loop_set_status (lo , mode , bdev , & info64 );
1373+ return loop_set_status (lo , & info64 );
13941374}
13951375
13961376static int
@@ -1569,14 +1549,14 @@ static int lo_ioctl(struct block_device *bdev, blk_mode_t mode,
15691549 case LOOP_SET_STATUS :
15701550 err = - EPERM ;
15711551 if ((mode & BLK_OPEN_WRITE ) || capable (CAP_SYS_ADMIN ))
1572- err = loop_set_status_old (lo , mode , bdev , argp );
1552+ err = loop_set_status_old (lo , argp );
15731553 break ;
15741554 case LOOP_GET_STATUS :
15751555 return loop_get_status_old (lo , argp );
15761556 case LOOP_SET_STATUS64 :
15771557 err = - EPERM ;
15781558 if ((mode & BLK_OPEN_WRITE ) || capable (CAP_SYS_ADMIN ))
1579- err = loop_set_status64 (lo , mode , bdev , argp );
1559+ err = loop_set_status64 (lo , argp );
15801560 break ;
15811561 case LOOP_GET_STATUS64 :
15821562 return loop_get_status64 (lo , argp );
@@ -1670,17 +1650,16 @@ loop_info64_to_compat(const struct loop_info64 *info64,
16701650}
16711651
16721652static int
1673- loop_set_status_compat (struct loop_device * lo , blk_mode_t mode ,
1674- struct block_device * bdev ,
1675- const struct compat_loop_info __user * arg )
1653+ loop_set_status_compat (struct loop_device * lo ,
1654+ const struct compat_loop_info __user * arg )
16761655{
16771656 struct loop_info64 info64 ;
16781657 int ret ;
16791658
16801659 ret = loop_info64_from_compat (arg , & info64 );
16811660 if (ret < 0 )
16821661 return ret ;
1683- return loop_set_status (lo , mode , bdev , & info64 );
1662+ return loop_set_status (lo , & info64 );
16841663}
16851664
16861665static int
@@ -1706,7 +1685,7 @@ static int lo_compat_ioctl(struct block_device *bdev, blk_mode_t mode,
17061685
17071686 switch (cmd ) {
17081687 case LOOP_SET_STATUS :
1709- err = loop_set_status_compat (lo , mode , bdev ,
1688+ err = loop_set_status_compat (lo ,
17101689 (const struct compat_loop_info __user * )arg );
17111690 break ;
17121691 case LOOP_GET_STATUS :
0 commit comments