powerpc/powernv: Fix the overflow of OPAL message notifiers head array
Fixes the condition check of incoming message type which can otherwise shoot beyond the message notifiers head array. Signed-off-by: Neelesh Gupta <neelegup@linux.vnet.ibm.com> Reviewed-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com> Reviewed-by: Anshuman Khandual <khandual@linux.vnet.ibm.com> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:
parent
111fbc68fd
commit
792f96e9a7
1 changed files with 4 additions and 8 deletions
|
@ -308,16 +308,12 @@ void opal_notifier_disable(void)
|
||||||
int opal_message_notifier_register(enum OpalMessageType msg_type,
|
int opal_message_notifier_register(enum OpalMessageType msg_type,
|
||||||
struct notifier_block *nb)
|
struct notifier_block *nb)
|
||||||
{
|
{
|
||||||
if (!nb) {
|
if (!nb || msg_type >= OPAL_MSG_TYPE_MAX) {
|
||||||
pr_warning("%s: Invalid argument (%p)\n",
|
pr_warning("%s: Invalid arguments, msg_type:%d\n",
|
||||||
__func__, nb);
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
if (msg_type > OPAL_MSG_TYPE_MAX) {
|
|
||||||
pr_warning("%s: Invalid message type argument (%d)\n",
|
|
||||||
__func__, msg_type);
|
__func__, msg_type);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
return atomic_notifier_chain_register(
|
return atomic_notifier_chain_register(
|
||||||
&opal_msg_notifier_head[msg_type], nb);
|
&opal_msg_notifier_head[msg_type], nb);
|
||||||
}
|
}
|
||||||
|
@ -354,7 +350,7 @@ static void opal_handle_message(void)
|
||||||
type = be32_to_cpu(msg.msg_type);
|
type = be32_to_cpu(msg.msg_type);
|
||||||
|
|
||||||
/* Sanity check */
|
/* Sanity check */
|
||||||
if (type > OPAL_MSG_TYPE_MAX) {
|
if (type >= OPAL_MSG_TYPE_MAX) {
|
||||||
pr_warning("%s: Unknown message type: %u\n", __func__, type);
|
pr_warning("%s: Unknown message type: %u\n", __func__, type);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue