aboutsummaryrefslogtreecommitdiff
path: root/block/blk-mq-sysfs.c
diff options
context:
space:
mode:
authorKevin Hilman <khilman@linaro.org>2015-10-13 16:30:38 -0700
committerKevin Hilman <khilman@linaro.org>2015-10-13 16:30:38 -0700
commit575afa2b6b9b628766618f3da6c7289ab32f5661 (patch)
treed4a23ddffc524e15b9a68b1aefa44da967fe7dd8 /block/blk-mq-sysfs.c
parentc765e5c15e7d23d2b8b37fafdafc63c0ea75fabf (diff)
parent1230ae0e99e05ced8a945a1a2c5762ce5c6c97c9 (diff)
Merge tag 'v3.14.54' of git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable into linux-linaro-lsk-v3.14lsk-v3.14-15.10
This is the 3.14.54 stable release * tag 'v3.14.54' of git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable: (115 commits) Linux 3.14.54 NVMe: Initialize device reference count earlier udf: Check length of extended attributes and allocation descriptors x86/nmi/64: Use DF to avoid userspace RSP confusing nested NMI detection x86/nmi/64: Reorder nested NMI checks x86/nmi/64: Improve nested NMI comments x86/nmi/64: Switch stacks on userspace NMI entry x86/nmi/64: Remove asm code that saves CR2 x86/nmi: Enable nested do_nmi() handling for 64-bit kernels Revert "iio: bmg160: IIO_BUFFER and IIO_TRIGGERED_BUFFER are required" net: gso: use feature flag argument in all protocol gso handlers bna: fix interrupts storm caused by erroneous packets udp: fix dst races with multicast early demux rds: fix an integer overflow test in rds_info_getsockopt() packet: missing dev_put() in packet_do_bind() fib_rules: fix fib rule dumps across multiple skbs openvswitch: Zero flows on allocation. sctp: fix race on protocol/netns initialization netlink, mmap: transform mmap skb into full skb on taps net/ipv6: Correct PIM6 mrt_lock handling ...
Diffstat (limited to 'block/blk-mq-sysfs.c')
-rw-r--r--block/blk-mq-sysfs.c25
1 files changed, 18 insertions, 7 deletions
diff --git a/block/blk-mq-sysfs.c b/block/blk-mq-sysfs.c
index b91ce75bd35d..d2102c4eefbf 100644
--- a/block/blk-mq-sysfs.c
+++ b/block/blk-mq-sysfs.c
@@ -141,15 +141,26 @@ static ssize_t blk_mq_sysfs_completed_show(struct blk_mq_ctx *ctx, char *page)
static ssize_t sysfs_list_show(char *page, struct list_head *list, char *msg)
{
- char *start_page = page;
struct request *rq;
+ int len = snprintf(page, PAGE_SIZE - 1, "%s:\n", msg);
+
+ list_for_each_entry(rq, list, queuelist) {
+ const int rq_len = 2 * sizeof(rq) + 2;
+
+ /* if the output will be truncated */
+ if (PAGE_SIZE - 1 < len + rq_len) {
+ /* backspacing if it can't hold '\t...\n' */
+ if (PAGE_SIZE - 1 < len + 5)
+ len -= rq_len;
+ len += snprintf(page + len, PAGE_SIZE - 1 - len,
+ "\t...\n");
+ break;
+ }
+ len += snprintf(page + len, PAGE_SIZE - 1 - len,
+ "\t%p\n", rq);
+ }
- page += sprintf(page, "%s:\n", msg);
-
- list_for_each_entry(rq, list, queuelist)
- page += sprintf(page, "\t%p\n", rq);
-
- return page - start_page;
+ return len;
}
static ssize_t blk_mq_sysfs_rq_list_show(struct blk_mq_ctx *ctx, char *page)