diff --git a/block/blk-sysfs.c b/block/blk-sysfs.c index 2de6c14dfecf8598afb10408ccc977d30994ff71..8d1bab14b83a899405af0916ee23568794dffadb 100644 --- a/block/blk-sysfs.c +++ b/block/blk-sysfs.c @@ -773,13 +773,16 @@ queue_attr_store(struct kobject *kobj, struct attribute *attr, struct queue_sysfs_entry *entry = to_queue(attr); struct gendisk *disk = container_of(kobj, struct gendisk, queue_kobj); struct request_queue *q = disk->queue; + unsigned int noio_flag; ssize_t res; if (!entry->store) return -EIO; mutex_lock(&q->sysfs_lock); + noio_flag = memalloc_noio_save(); res = entry->store(q, page, length); + memalloc_noio_restore(noio_flag); mutex_unlock(&q->sysfs_lock); return res; }