Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp781004ybz; Sat, 25 Apr 2020 04:13:58 -0700 (PDT) X-Google-Smtp-Source: APiQypJRk6fI5fMpir6qOIcMg9wcbXZ06r0/fV8OmYpNmOPOf9dBR6urJbPWkpl6rFRDkz/EAIMB X-Received: by 2002:a17:906:3443:: with SMTP id d3mr11754750ejb.18.1587813238210; Sat, 25 Apr 2020 04:13:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1587813238; cv=none; d=google.com; s=arc-20160816; b=uvCWOSjHpY+RWYcqhFrlg73wbOipW7jhJ4E409MFBLLe3/G+Z+w2RjJHW6t1rujg+9 457yqx/60peLzHxCUj7DnYX0rt4zGzAx4+UN9LrJkENJ22AA6svCMRVdgfPX3iRnYo6u HPAlAHXDtFJdderHBhYVY9AOUZn2QGlMPPB9wRLwxBhOvu05YCx1p2hC81eABnKcSOj9 o1Vi7o7WKQB7OubavlegAKEr3y94fLlZfeyg/QnICnnEbAr4tp2uhpdqTsQZ8K59YNUh OW1ONp6e3aUj2eaIz6Ul57tmDTI16wXoNsxxat0Lc2YdokghKnZeFdiClctWNmXqWbds pIRQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=IxXwaITeFhkfWcto4jZfFgAdQs8wTFzjx9bORWuABjE=; b=QFqd+v17dC3weu3PFb5AIPrsDZkFcO7pL//Myu0pl+TM7baQEg6vR/Xzk6x/a4OsUr a215iAqzh/AO7krnmialsmj4plMxVmZTHkz1QI0Pf+4/CZ2djYeSuJpBq0SO1rFK1017 MnWWfrG73KCBwTu3B2CxTg2/Ve6QshrTNS+Q6VQthtDLB5qDAn3cC+JdOWfKwGQAmNna gSVpbeZywt5VA54lpf1AOZ+g5MyNHEVgiTMyEPru5JAQU8fYNaaUKlUfw7IxgOsntPnz IVU5ziODYNO1raJe+ECabyv9P2htibg65GTT7Dvhkse+/HvKg6jfBgCjRqUCPRAXgaWU R6Og== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=jKJHFN2H; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id cm21si4894875edb.275.2020.04.25.04.13.34; Sat, 25 Apr 2020 04:13:58 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=jKJHFN2H; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726364AbgDYLJP (ORCPT + 99 others); Sat, 25 Apr 2020 07:09:15 -0400 Received: from us-smtp-2.mimecast.com ([207.211.31.81]:42685 "EHLO us-smtp-delivery-1.mimecast.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726053AbgDYLJI (ORCPT ); Sat, 25 Apr 2020 07:09:08 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1587812948; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=IxXwaITeFhkfWcto4jZfFgAdQs8wTFzjx9bORWuABjE=; b=jKJHFN2HPa8E0JXLYbf21DfXQmwczyhLujQlB+54hnfBpmg6+i/IO0DI1zkVF25eSXuYEv keJYlpnDRd8uvpCvXoANefSBk/0E2eOLtsDDgoT7WDI7S0VtsDe3mF3wXNlhpmytLLCJ7S xrthNinxWIazEA7QYhvuAU7xbBditBI= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-433-wPm5p_aIN5CZZZJh-Aq6Kg-1; Sat, 25 Apr 2020 07:08:56 -0400 X-MC-Unique: wPm5p_aIN5CZZZJh-Aq6Kg-1 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 66E981005510; Sat, 25 Apr 2020 11:08:55 +0000 (UTC) Received: from treble.redhat.com (ovpn-114-29.rdu2.redhat.com [10.10.114.29]) by smtp.corp.redhat.com (Postfix) with ESMTP id A6EE85C1D4; Sat, 25 Apr 2020 11:08:54 +0000 (UTC) From: Josh Poimboeuf To: live-patching@vger.kernel.org Cc: linux-kernel@vger.kernel.org, Peter Zijlstra , Jessica Yu , Joe Lawrence Subject: [PATCH v3 10/10] x86/module: Use text_mutex in apply_relocate_add() Date: Sat, 25 Apr 2020 06:07:30 -0500 Message-Id: <9b8bd09ae5c255e2849a12b3b70085b327bdf9fd.1587812518.git.jpoimboe@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 Content-Transfer-Encoding: quoted-printable Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Now that the livepatch code no longer needs the text_mutex for changing module permissions, move its usage down to apply_relocate_add(). Note the s390 version of apply_relocate_add() doesn't need to use the text_mutex because it already uses s390_kernel_write_lock, which accomplishes the same task. Signed-off-by: Josh Poimboeuf --- arch/x86/kernel/module.c | 9 +++++++-- kernel/livepatch/core.c | 6 ------ 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/arch/x86/kernel/module.c b/arch/x86/kernel/module.c index 7614f478fd7a..23c95a53d20e 100644 --- a/arch/x86/kernel/module.c +++ b/arch/x86/kernel/module.c @@ -18,6 +18,7 @@ #include #include #include +#include =20 #include #include @@ -227,14 +228,18 @@ int apply_relocate_add(Elf64_Shdr *sechdrs, bool early =3D me->state =3D=3D MODULE_STATE_UNFORMED; void *(*write)(void *, const void *, size_t) =3D memcpy; =20 - if (!early) + if (!early) { write =3D text_poke; + mutex_lock(&text_mutex); + } =20 ret =3D __apply_relocate_add(sechdrs, strtab, symindex, relsec, me, write); =20 - if (!early) + if (!early) { text_poke_sync(); + mutex_unlock(&text_mutex); + } =20 return ret; } diff --git a/kernel/livepatch/core.c b/kernel/livepatch/core.c index 6b8b3c067be0..96d2da14eb0d 100644 --- a/kernel/livepatch/core.c +++ b/kernel/livepatch/core.c @@ -775,9 +775,6 @@ static int klp_init_object_loaded(struct klp_patch *p= atch, int ret; =20 if (klp_is_module(obj)) { - - mutex_lock(&text_mutex); - /* * Only write module-specific relocations here * (.klp.rela.{module}.*). vmlinux-specific relocations were @@ -785,9 +782,6 @@ static int klp_init_object_loaded(struct klp_patch *p= atch, * itself. */ ret =3D klp_apply_object_relocs(patch, obj); - - mutex_unlock(&text_mutex); - if (ret) return ret; } --=20 2.21.1