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/

Reply via email to