Unverified Commit 871623ff authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files

!10052 vmci: prevent speculation leaks by sanitizing event in event_deliver()

parents 49b123f1 f7668321
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -9,6 +9,7 @@
#include <linux/vmw_vmci_api.h>
#include <linux/list.h>
#include <linux/module.h>
#include <linux/nospec.h>
#include <linux/sched.h>
#include <linux/slab.h>
#include <linux/rculist.h>
@@ -86,9 +87,12 @@ static void event_deliver(struct vmci_event_msg *event_msg)
{
	struct vmci_subscription *cur;
	struct list_head *subscriber_list;
	u32 sanitized_event, max_vmci_event;

	rcu_read_lock();
	subscriber_list = &subscriber_array[event_msg->event_data.event];
	max_vmci_event = ARRAY_SIZE(subscriber_array);
	sanitized_event = array_index_nospec(event_msg->event_data.event, max_vmci_event);
	subscriber_list = &subscriber_array[sanitized_event];
	list_for_each_entry_rcu(cur, subscriber_list, node) {
		cur->callback(cur->id, &event_msg->event_data,
			      cur->callback_data);