Skip to content

pseries/papr-hvpipe: Fix deadlock, races and misc cleanups

Ritesh Harjani (IBM) linuxppc-dev lkml stable 2 versions – Applied

Status from this message: Applied to powerpc/fixes.

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v3 Latest9 patches 3 repliesApplied
  2. v2 RFC10 patches 0 repliesSuperseded

Changes in v3 from the cover letter

======
1. Rearranged the patches in such a way that it is easier to backport the fixes if required.
2. Clubbed patch-8 and patch-10 (of v2) since they both were changing the same function.
3. Handled ret>=0 case in copy_to_user patch, when the user itself may request for 0 effective bytes (after the HDR_LEN).

Patches in v3 Applied

#Subject and filesSizeRepliesApplied
1/9pseries/papr-hvpipe: Fix race with interrupt handlerarch/powerpc/platforms/pseries/papr-hvpipe.c+11 -90 replies
2/9pseries/papr-hvpipe: Prevent kernel stack memory leak to userspacearch/powerpc/platforms/pseries/papr-hvpipe.c+1 -10 replies
3/9pseries/papr-hvpipe: Fix null ptr deref in papr_hvpipe_dev_create_handle()arch/powerpc/platforms/pseries/papr-hvpipe.c+30 -270 replies
4/9pseries/papr-hvpipe: Fix & simplify error handling in papr_hvpipe_init()arch/powerpc/platforms/pseries/papr-hvpipe.c+17 -110 replies
5/9pseries/papr-hvpipe: Fix the usage of copy_to_user()arch/powerpc/platforms/pseries/papr-hvpipe.c+14 -90 replies
6/9pseries/papr-hvpipe: Simplify spin unlock usage in papr_hvpipe_handle_release()arch/powerpc/platforms/pseries/papr-hvpipe.c+2 -30 replies
7/9pseries/papr-hvpipe: Kill task_struct pointer from struct hvpipe_source_infoarch/powerpc/platforms/pseries/papr-hvpipe.c arch/powerpc/platforms/pseries/papr-hvpipe.h+2 -40 replies
8/9pseries/papr-hvpipe: Refactor and simplify hvpipe_rtas_recv_msg()arch/powerpc/platforms/pseries/papr-hvpipe.c+26 -260 replies
9/9pseries/papr-hvpipe: Fix style and checkpatch issues in enable_hvpipe_IRQ()arch/powerpc/platforms/pseries/papr-hvpipe.c+6 -70 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v3 yet.

Read the v3 thread

Cover letter [PATCH v3 0/9] pseries/papr-hvpipe: Fix deadlock, races and misc cleanups

While going over papr-hvpipe code, there were a few fixes which were identified. This patch series is an attempt to fix those along with some misc cleanups. Me and Haren are trying to get these patches verified on a real HW. The tests are not straight forward and we are waiting for the results.
Will update on the test results once we hear back from the internal test team.

v2->v3:
======
1. Rearranged the patches in such a way that it is easier to backport the fixes if required.
2. Clubbed patch-8 and patch-10 (of v2) since they both were changing the same function.
3. Handled ret>=0 case in copy_to_user patch, when the user itself may request for 0 effective bytes (after the HDR_LEN).

[v2]: https://lore.kernel.org/linuxppc-dev/[email protected]/

v1->v2:
========
1. Fix a possible deadlock due to use of spin_lock instead of spin_lock_irqsave.
2. Prevent kernel stack uninit memory leak to userspace
3. Fix the race condition in null-ptr-deref case where there may be an msg pending to be consumed from the hvpipe.
4. Fixed error handling in init routine in patch-10

[v1]: https://lore.kernel.org/linuxppc-dev/[email protected]/#t

Ritesh Harjani (IBM) (9):
pseries/papr-hvpipe: Fix race with interrupt handler pseries/papr-hvpipe: Prevent kernel stack memory leak to userspace pseries/papr-hvpipe: Fix null ptr deref in papr_hvpipe_dev_create_handle() pseries/papr-hvpipe: Fix & simplify error handling in papr_hvpipe_init() pseries/papr-hvpipe: Fix the usage of copy_to_user() pseries/papr-hvpipe: Simplify spin unlock usage in papr_hvpipe_handle_release() pseries/papr-hvpipe: Kill task_struct pointer from struct hvpipe_source_info pseries/papr-hvpipe: Refactor and simplify hvpipe_rtas_recv_msg() pseries/papr-hvpipe: Fix style and checkpatch issues in enable_hvpipe_IRQ()

 arch/powerpc/platforms/pseries/papr-hvpipe.c | 181 ++++++++++---------
 arch/powerpc/platforms/pseries/papr-hvpipe.h |   1 -
 2 files changed, 97 insertions(+), 85 deletions(-)

--
2.39.5