]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
pseries/papr-hvpipe: Refactor and simplify hvpipe_rtas_recv_msg()
authorRitesh Harjani (IBM) <ritesh.list@gmail.com>
Fri, 1 May 2026 04:11:47 +0000 (09:41 +0530)
committerMadhavan Srinivasan <maddy@linux.ibm.com>
Wed, 6 May 2026 02:00:25 +0000 (07:30 +0530)
Simplify hvpipe_rtas_recv_msg() by removing three levels of nesting...
if (!ret)
    if (buf)
if (size < bytes_written)
... this refactoring of the function bails out to "out:" label first, in case
of any error. This simplifies the init flow.

Signed-off-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com>
Link: https://patch.msgid.link/bbe7ddf8b8e25c9be8fc5e2c4aea9e5fca128bf4.1777606826.git.ritesh.list@gmail.com
arch/powerpc/platforms/pseries/papr-hvpipe.c

index 46159f1c1cf101d52f8a35ee2564d93126dfee2f..3688b2be0445e82534a4c06159b96d2c3e8d1f0a 100644 (file)
@@ -190,34 +190,34 @@ static int hvpipe_rtas_recv_msg(char __user *buf, int size)
                return -ENOMEM;
        }
 
-       ret = rtas_ibm_receive_hvpipe_msg(work_area, &srcID,
-                                       &bytes_written);
-       if (!ret) {
-               /*
-                * Recv HVPIPE RTAS is successful.
-                * When releasing FD or no one is waiting on the
-                * specific source, issue recv HVPIPE RTAS call
-                * so that pipe is not blocked - this func is called
-                * with NULL buf.
-                */
-               if (buf) {
-                       if (size < bytes_written) {
-                               pr_err("Received the payload size = %d, but the buffer size = %d\n",
-                                       bytes_written, size);
-                               bytes_written = size;
-                       }
-                       if (copy_to_user(buf,
-                                       rtas_work_area_raw_buf(work_area),
-                                       bytes_written))
-                               ret = -EFAULT;
-                       else
-                               ret = bytes_written;
-               }
-       } else {
-               pr_err("ibm,receive-hvpipe-msg failed with %d\n",
-                               ret);
+       /*
+        * Recv HVPIPE RTAS is successful.
+        * When releasing FD or no one is waiting on the
+        * specific source, issue recv HVPIPE RTAS call
+        * so that pipe is not blocked - this func is called
+        * with NULL buf.
+        */
+       ret = rtas_ibm_receive_hvpipe_msg(work_area, &srcID, &bytes_written);
+       if (ret) {
+               pr_err("ibm,receive-hvpipe-msg failed with %d\n", ret);
+               goto out;
        }
 
+       if (!buf)
+               goto out;
+
+       if (size < bytes_written) {
+               pr_err("Received the payload size = %d, but the buffer size = %d\n",
+                               bytes_written, size);
+               bytes_written = size;
+       }
+
+       if (copy_to_user(buf, rtas_work_area_raw_buf(work_area), bytes_written))
+               ret = -EFAULT;
+       else
+               ret = bytes_written;
+
+out:
        rtas_work_area_free(work_area);
        return ret;
 }