From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752839AbdJTQOb (ORCPT ); Fri, 20 Oct 2017 12:14:31 -0400 Received: from mout.web.de ([217.72.192.78]:50368 "EHLO mout.web.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752619AbdJTQO2 (ORCPT ); Fri, 20 Oct 2017 12:14:28 -0400 To: linux-ia64@vger.kernel.org, Fenghua Yu , Oleg Nesterov , Tony Luck Cc: LKML , kernel-janitors@vger.kernel.org From: SF Markus Elfring Subject: [PATCH] ia64/kernel/ptrace: Use common error handling code in two functions Message-ID: <48f0efa9-ae84-c338-3f07-1f39fc3ad6a6@users.sourceforge.net> Date: Fri, 20 Oct 2017 18:14:11 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Language: en-GB Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K0:pRi4c1kd9CIRRszXnJqwEk2kDnfgs9UYxrlpHrQJuCcdiK2mGoa ITlNxPtl4qSCiN0jPdAaPs4wJaxrDJMP8gpUZLAd7jHAC+ESxlLjpLMs5JXbS9yT/z3jP6T /nkUDxzrYElebKw8ZP1My4viuMbxL4as4j3q7tTWbBsItlPtTB5zM6nechGksArO1HlWjZi pJJTcDiHXtye1lNf34LSA== X-UI-Out-Filterresults: notjunk:1;V01:K0:Vk7J5v2uvms=:Pl1QpaITI6Vo1fBYFaHfXX RfZhriSj7G+bjwMxN0QD25pVO0GeN2mi/uUPBi6k83pts0FVjB+4riXsG9fvaOhwwiO+9wlua HpScvevNfln2blvFUwCQ2vtDNaagIq9vcKmGm12ZBStjKSDEfAn6kHUGxlEkdghqMDVRAbwZA dNjGApT9WyTEzr+Ky6nHMq1XSsQ46K08MkMyNto0CWqOmbL362HuIkhno39gkrYJB1p4mrLgK NFGQ7KmSc6bUCWxPErrvK6vyxqHDMyeJ5D6cxlJZx9HIYWG7fTwMv7PcV0EYdXsSsKspTkMnI ysDp9jpx/Hwgncxcjhst0PAmYNlvd79ihmjUNIwvHRvScQkrykqQYZJYeoO6aE8lpi0DxuoXw j4iXIcXTFiuENO82V9X6BvuMP/jvi1vPcEQ1Nxnljz3ktXvjWQ8KFZc3pWckeAkeaYNtQD3Mk GIgZfdMiMbP0ZJXGL4GnQd1WEsV96v4zH9yMImmNvO6W2eGRnswXng2sqKDlMyxgFK+cH0UqV 4vJ/C5cFHHIBXQmCMuELUTViK/K65XRiwXV9CI2+5xcRDAXi9W9nXAJwqy1NhyMM4aUOjhFar PUp0P+xLEGWQuVC7CdaqWL9C57I92YdsC3ZHPdYHxqxXhWBbe+aczhuV87sR9Bxw+fBUuTEYc v5Cz+r2BFB+jA678txDCc/Uy+XkqEXOCMKsnyJzOdkpeCh9MXH8kOu86Nnc/YkWAJzSZc5n3+ 53YZSsu+xjwqMmi7Z0nWWF4Z6KcvxxEN7WjUi+dEYZRAGf444O6tWdyWhwDTMigNbUfJaDtco mVPbMb3qsE7lGKhMswC8oJOdb6pAcOrKOO2AtiYCX6gASCnxBE= Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Markus Elfring Date: Fri, 20 Oct 2017 18:00:52 +0200 * Add a jump target so that a bit of exception handling can be better reused at the end of these functions. This issue was detected by using the Coccinelle software. * Adjust the indentation for six if statements. Signed-off-by: Markus Elfring --- arch/ia64/kernel/ptrace.c | 63 +++++++++++++++++++++++++---------------------- 1 file changed, 33 insertions(+), 30 deletions(-) diff --git a/arch/ia64/kernel/ptrace.c b/arch/ia64/kernel/ptrace.c index 3f8293378a83..447e3f353014 100644 --- a/arch/ia64/kernel/ptrace.c +++ b/arch/ia64/kernel/ptrace.c @@ -1537,11 +1537,10 @@ void do_gpregs_get(struct unw_frame_info *info, void *arg) (dst->pos + dst->count) : ELF_GR_OFFSET(16); for (i = dst->pos; i < min_copy; i += sizeof(elf_greg_t), index++) - if (access_elf_reg(dst->target, info, i, - &tmp[index], 0) < 0) { - dst->ret = -EIO; - return; - } + if (access_elf_reg(dst->target, info, i, &tmp[index], 0) + < 0) + goto e_io; + dst->ret = user_regset_copyout(&dst->pos, &dst->count, &dst->u.get.kbuf, &dst->u.get.ubuf, tmp, ELF_GR_OFFSET(1), ELF_GR_OFFSET(16)); @@ -1566,11 +1565,10 @@ void do_gpregs_get(struct unw_frame_info *info, void *arg) (dst->pos + dst->count) : ELF_CR_IIP_OFFSET; for (i = dst->pos; i < min_copy; i += sizeof(elf_greg_t), index++) - if (access_elf_reg(dst->target, info, i, - &tmp[index], 0) < 0) { - dst->ret = -EIO; - return; - } + if (access_elf_reg(dst->target, info, i, &tmp[index], 0) + < 0) + goto e_io; + dst->ret = user_regset_copyout(&dst->pos, &dst->count, &dst->u.get.kbuf, &dst->u.get.ubuf, tmp, ELF_NAT_OFFSET, ELF_CR_IIP_OFFSET); @@ -1587,15 +1585,19 @@ void do_gpregs_get(struct unw_frame_info *info, void *arg) (dst->pos + dst->count) : ELF_AR_END_OFFSET; for (i = dst->pos; i < min_copy; i += sizeof(elf_greg_t), index++) - if (access_elf_reg(dst->target, info, i, - &tmp[index], 0) < 0) { - dst->ret = -EIO; - return; - } + if (access_elf_reg(dst->target, info, i, &tmp[index], 0) + < 0) + goto e_io; + dst->ret = user_regset_copyout(&dst->pos, &dst->count, &dst->u.get.kbuf, &dst->u.get.ubuf, tmp, ELF_CR_IIP_OFFSET, ELF_AR_END_OFFSET); } + + return; + +e_io: + dst->ret = -EIO; } void do_gpregs_set(struct unw_frame_info *info, void *arg) @@ -1628,11 +1630,10 @@ void do_gpregs_set(struct unw_frame_info *info, void *arg) if (dst->ret) return; for ( ; i < dst->pos; i += sizeof(elf_greg_t), index++) - if (access_elf_reg(dst->target, info, i, - &tmp[index], 1) < 0) { - dst->ret = -EIO; - return; - } + if (access_elf_reg(dst->target, info, i, &tmp[index], 1) + < 0) + goto e_io; + if (dst->count == 0) return; } @@ -1657,11 +1658,10 @@ void do_gpregs_set(struct unw_frame_info *info, void *arg) if (dst->ret) return; for (; i < dst->pos; i += sizeof(elf_greg_t), index++) - if (access_elf_reg(dst->target, info, i, - &tmp[index], 1) < 0) { - dst->ret = -EIO; - return; - } + if (access_elf_reg(dst->target, info, i, &tmp[index], 1) + < 0) + goto e_io; + if (dst->count == 0) return; } @@ -1678,12 +1678,15 @@ void do_gpregs_set(struct unw_frame_info *info, void *arg) if (dst->ret) return; for ( ; i < dst->pos; i += sizeof(elf_greg_t), index++) - if (access_elf_reg(dst->target, info, i, - &tmp[index], 1) < 0) { - dst->ret = -EIO; - return; - } + if (access_elf_reg(dst->target, info, i, &tmp[index], 1) + < 0) + goto e_io; } + + return; + +e_io: + dst->ret = -EIO; } #define ELF_FP_OFFSET(i) (i * sizeof(elf_fpreg_t)) -- 2.14.2