powerpc/pseries: Correct rtas_data_buf locking in dlpar code
authorNathan Fontenot <nfont@austin.ibm.com>
Wed, 18 Aug 2010 09:58:46 +0000 (09:58 +0000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Thu, 2 Sep 2010 00:07:38 +0000 (10:07 +1000)
commit93f68f1ef787d97ab688f78a01f446e85bb9a496
tree48686ab3564991aba66e47f1a6048ff8a4cbe4c2
parenta28dec2f26013aad89446b1f708f948617bc28a2
powerpc/pseries: Correct rtas_data_buf locking in dlpar code

The dlpar code can cause a deadlock to occur when making the RTAS
configure-connector call.  This occurs because we make kmalloc calls,
which can block, while parsing the rtas_data_buf and holding the
rtas_data_buf_lock.  This an cause issues if someone else attempts
to grab the rtas_data_bug_lock.

This patch alleviates this issue by copying the contents of the rtas_data_buf
to a local buffer before parsing.  This allows us to only hold the
rtas_data_buf_lock around the RTAS configure-connector calls.

Signed-off-by: Nathan Fontenot <nfont@austin.ibm.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/platforms/pseries/dlpar.c