We already limit the size of the message object, there's no reason to add an arbitrary additional limit on the number of items. We don't do this for other item-arrays, so lets stop restricting the messages in this way.
Signed-off-by: David Herrmann <[email protected]> --- v2: - drop redundant "n = 0" assignment - rename 'n' to 'n_res' ipc/kdbus/limits.h | 3 --- ipc/kdbus/message.c | 12 ++++-------- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/ipc/kdbus/limits.h b/ipc/kdbus/limits.h index 6450f58..c54925a 100644 --- a/ipc/kdbus/limits.h +++ b/ipc/kdbus/limits.h @@ -19,9 +19,6 @@ /* maximum size of message header and items */ #define KDBUS_MSG_MAX_SIZE SZ_8K -/* maximum number of message items */ -#define KDBUS_MSG_MAX_ITEMS 128 - /* maximum number of memfd items per message */ #define KDBUS_MSG_MAX_MEMFD_ITEMS 16 diff --git a/ipc/kdbus/message.c b/ipc/kdbus/message.c index 066e816..e9da672 100644 --- a/ipc/kdbus/message.c +++ b/ipc/kdbus/message.c @@ -214,7 +214,7 @@ static int kdbus_msg_scan_items(struct kdbus_kmsg *kmsg, struct kdbus_msg_resources *res = kmsg->res; const struct kdbus_msg *msg = &kmsg->msg; const struct kdbus_item *item; - size_t n, n_vecs, n_memfds; + size_t n_res, n_vecs, n_memfds; bool has_bloom = false; bool has_name = false; bool has_fds = false; @@ -243,9 +243,9 @@ static int kdbus_msg_scan_items(struct kdbus_kmsg *kmsg, } } - n = n_vecs + n_memfds; - if (n > 0) { - res->data = kcalloc(n, sizeof(*res->data), GFP_KERNEL); + n_res = n_vecs + n_memfds; + if (n_res > 0) { + res->data = kcalloc(n_res, sizeof(*res->data), GFP_KERNEL); if (!res->data) return -ENOMEM; } @@ -257,15 +257,11 @@ static int kdbus_msg_scan_items(struct kdbus_kmsg *kmsg, } /* import data payloads */ - n = 0; vec_size = 0; KDBUS_ITEMS_FOREACH(item, msg->items, KDBUS_ITEMS_SIZE(msg, items)) { size_t payload_size = KDBUS_ITEM_PAYLOAD_SIZE(item); struct iovec *iov = kmsg->iov + kmsg->iov_count; - if (++n > KDBUS_MSG_MAX_ITEMS) - return -E2BIG; - switch (item->type) { case KDBUS_ITEM_PAYLOAD_VEC: { struct kdbus_msg_data *d = res->data + res->data_count; -- 2.4.5 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

