diff options
Diffstat (limited to 'kernel/trace/blktrace.c')
| -rw-r--r-- | kernel/trace/blktrace.c | 18 | 
1 files changed, 12 insertions, 6 deletions
| diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c index 2a685b45b73b..45a3928544ce 100644 --- a/kernel/trace/blktrace.c +++ b/kernel/trace/blktrace.c @@ -648,6 +648,12 @@ int blk_trace_startstop(struct request_queue *q, int start)  }  EXPORT_SYMBOL_GPL(blk_trace_startstop); +/* + * When reading or writing the blktrace sysfs files, the references to the + * opened sysfs or device files should prevent the underlying block device + * from being removed. So no further delete protection is really needed. + */ +  /**   * blk_trace_ioctl: - handle the ioctls associated with tracing   * @bdev:	the block device @@ -665,7 +671,7 @@ int blk_trace_ioctl(struct block_device *bdev, unsigned cmd, char __user *arg)  	if (!q)  		return -ENXIO; -	mutex_lock(&bdev->bd_mutex); +	mutex_lock(&q->blk_trace_mutex);  	switch (cmd) {  	case BLKTRACESETUP: @@ -691,7 +697,7 @@ int blk_trace_ioctl(struct block_device *bdev, unsigned cmd, char __user *arg)  		break;  	} -	mutex_unlock(&bdev->bd_mutex); +	mutex_unlock(&q->blk_trace_mutex);  	return ret;  } @@ -1727,7 +1733,7 @@ static ssize_t sysfs_blk_trace_attr_show(struct device *dev,  	if (q == NULL)  		goto out_bdput; -	mutex_lock(&bdev->bd_mutex); +	mutex_lock(&q->blk_trace_mutex);  	if (attr == &dev_attr_enable) {  		ret = sprintf(buf, "%u\n", !!q->blk_trace); @@ -1746,7 +1752,7 @@ static ssize_t sysfs_blk_trace_attr_show(struct device *dev,  		ret = sprintf(buf, "%llu\n", q->blk_trace->end_lba);  out_unlock_bdev: -	mutex_unlock(&bdev->bd_mutex); +	mutex_unlock(&q->blk_trace_mutex);  out_bdput:  	bdput(bdev);  out: @@ -1788,7 +1794,7 @@ static ssize_t sysfs_blk_trace_attr_store(struct device *dev,  	if (q == NULL)  		goto out_bdput; -	mutex_lock(&bdev->bd_mutex); +	mutex_lock(&q->blk_trace_mutex);  	if (attr == &dev_attr_enable) {  		if (value) @@ -1814,7 +1820,7 @@ static ssize_t sysfs_blk_trace_attr_store(struct device *dev,  	}  out_unlock_bdev: -	mutex_unlock(&bdev->bd_mutex); +	mutex_unlock(&q->blk_trace_mutex);  out_bdput:  	bdput(bdev);  out: |