Apply aae86e8adb
				
					
				
			This commit is contained in:
		@@ -302,7 +302,6 @@ static const char fsg_string_interface[] = "Mass Storage";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define FSG_NO_INTR_EP 1
 | 
			
		||||
#define FSG_BUFFHD_STATIC_BUFFER 1
 | 
			
		||||
#define FSG_NO_DEVICE_STRINGS    1
 | 
			
		||||
#define FSG_NO_OTG               1
 | 
			
		||||
#define FSG_NO_INTR_EP           1
 | 
			
		||||
@@ -2795,13 +2794,19 @@ static struct fsg_common *fsg_common_init(struct fsg_common *common,
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	/* Data buffers cyclic list */
 | 
			
		||||
	/* Buffers in buffhds are static -- no need for additional
 | 
			
		||||
	 * allocation. */
 | 
			
		||||
	bh = common->buffhds;
 | 
			
		||||
	i = FSG_NUM_BUFFERS - 1;
 | 
			
		||||
	i = FSG_NUM_BUFFERS;
 | 
			
		||||
	goto buffhds_first_it;
 | 
			
		||||
	do {
 | 
			
		||||
		bh->next = bh + 1;
 | 
			
		||||
	} while (++bh, --i);
 | 
			
		||||
		++bh;
 | 
			
		||||
buffhds_first_it:
 | 
			
		||||
		bh->buf = kmalloc(FSG_BUFLEN, GFP_KERNEL);
 | 
			
		||||
		if (unlikely(!bh->buf)) {
 | 
			
		||||
			rc = -ENOMEM;
 | 
			
		||||
			goto error_release;
 | 
			
		||||
		}
 | 
			
		||||
	} while (--i);
 | 
			
		||||
	bh->next = common->buffhds;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -2909,6 +2914,7 @@ static void fsg_common_release(struct kref *ref)
 | 
			
		||||
		container_of(ref, struct fsg_common, ref);
 | 
			
		||||
	unsigned i = common->nluns;
 | 
			
		||||
	struct fsg_lun *lun = common->luns;
 | 
			
		||||
	struct fsg_buffhd *bh;
 | 
			
		||||
 | 
			
		||||
	/* If the thread isn't already dead, tell it to exit now */
 | 
			
		||||
	if (common->state != FSG_STATE_TERMINATED) {
 | 
			
		||||
@@ -2930,6 +2936,13 @@ static void fsg_common_release(struct kref *ref)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	kfree(common->luns);
 | 
			
		||||
 | 
			
		||||
	i = FSG_NUM_BUFFERS;
 | 
			
		||||
	bh = common->buffhds;
 | 
			
		||||
	do {
 | 
			
		||||
		kfree(bh->buf);
 | 
			
		||||
	} while (++bh, --i);
 | 
			
		||||
 | 
			
		||||
	if (common->free_storage_on_release)
 | 
			
		||||
		kfree(common);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user