[packages/kernel] - updated aufs patch

baggins baggins at pld-linux.org
Mon Jan 28 14:58:09 CET 2019


commit e110641897f9fd18242214c15530f96d411e245c
Author: Jan Rękorajski <baggins at pld-linux.org>
Date:   Mon Jan 28 14:57:50 2019 +0100

    - updated aufs patch

 kernel-aufs4.patch | 34 ++++++++++++++++++----------------
 1 file changed, 18 insertions(+), 16 deletions(-)
---
diff --git a/kernel-aufs4.patch b/kernel-aufs4.patch
index 01990861..c5e4ae45 100644
--- a/kernel-aufs4.patch
+++ b/kernel-aufs4.patch
@@ -39361,7 +39361,7 @@ index 470dd02..20dc3ec 100644
 @@ -689,6 +698,7 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
  			  unsigned int arg)
  {
- 	struct file	*file, *old_file;
+ 	struct file	*file = NULL, *old_file;
 +	struct file	*f, *virt_file = NULL, *old_virt_file;
  	int		error;
  
@@ -39369,7 +39369,7 @@ index 470dd02..20dc3ec 100644
 @@ -704,12 +714,19 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
  	file = fget(arg);
  	if (!file)
- 		goto out;
+ 		goto out_err;
 +	f = loop_real_file(file);
 +	if (f) {
 +		virt_file = file;
@@ -39379,7 +39379,7 @@ index 470dd02..20dc3ec 100644
  
  	error = loop_validate_file(file, bdev);
  	if (error)
- 		goto out_putf;
+ 		goto out_err;
  
  	old_file = lo->lo_backing_file;
 +	old_virt_file = lo->lo_backing_virt_file;
@@ -39394,23 +39394,25 @@ index 470dd02..20dc3ec 100644
  	lo->old_gfp_mask = mapping_gfp_mask(file->f_mapping);
  	mapping_set_gfp_mask(file->f_mapping,
  			     lo->old_gfp_mask & ~(__GFP_IO|__GFP_FS));
-@@ -728,12 +746,16 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
- 	blk_mq_unfreeze_queue(lo->lo_queue);
- 
+@@ -728,14 +746,18 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
+ 	 * dependency.
+ 	 */
  	fput(old_file);
 +	if (old_virt_file)
 +		fput(old_virt_file);
- 	if (lo->lo_flags & LO_FLAGS_PARTSCAN)
+ 	if (partscan)
  		loop_reread_partitions(lo, bdev);
  	return 0;
  
-  out_putf:
- 	fput(file);
+ out_err:
+ 	mutex_unlock(&loop_ctl_mutex);
+ 	if (file)
+ 		fput(file);
 +	if (virt_file)
 +		fput(virt_file);
-  out:
  	return error;
  }
+ 
 @@ -921,7 +943,7 @@ static int loop_prepare_queue(struct loop_device *lo)
  static int loop_set_fd(struct loop_device *lo, fmode_t mode,
  		       struct block_device *bdev, unsigned int arg)
@@ -39443,17 +39445,17 @@ index 470dd02..20dc3ec 100644
  	lo->lo_sizelimit = 0;
 @@ -1000,6 +1029,8 @@ static int loop_set_fd(struct loop_device *lo, fmode_t mode,
  
-  out_putf:
+ out_putf:
  	fput(file);
 +	if (virt_file)
 +		fput(virt_file);
-  out:
+ out:
  	/* This is safe: open() is still holding a reference. */
  	module_put(THIS_MODULE);
 @@ -1046,6 +1077,7 @@ loop_init_xfer(struct loop_device *lo, struct loop_func_table *xfer,
  static int loop_clr_fd(struct loop_device *lo)
  {
- 	struct file *filp = lo->lo_backing_file;
+ 	struct file *filp = NULL;
 +	struct file *virt_filp = lo->lo_backing_virt_file;
  	gfp_t gfp = lo->old_gfp_mask;
  	struct block_device *bdev = lo->lo_device;
@@ -39467,12 +39469,12 @@ index 470dd02..20dc3ec 100644
  
  	loop_release_xfer(lo);
 @@ -1125,6 +1158,8 @@ static int loop_clr_fd(struct loop_device *lo)
- 	 * bd_mutex which is usually taken before lo_ctl_mutex.
  	 */
- 	fput(filp);
+ 	if (filp)
+ 		fput(filp);
 +	if (virt_filp)
 +		fput(virt_filp);
- 	return 0;
+ 	return err;
  }
  
 diff --git a/drivers/block/loop.h b/drivers/block/loop.h
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/kernel.git/commitdiff/e110641897f9fd18242214c15530f96d411e245c



More information about the pld-cvs-commit mailing list