[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] livepatch: account for patch offset when applying NOP patch


  • To: Jan Beulich <jbeulich@xxxxxxxx>
  • From: Roger Pau Monné <roger.pau@xxxxxxxxxx>
  • Date: Wed, 30 Mar 2022 12:19:28 +0200
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=XUpRR1rswfTfSO/q6qpgnmXZi7Sgj4fUUKkmY4+kR+Y=; b=SpDQrZHQACXPH1KMGAgceNUjo1ASTs/QiglKd0QQTMhxP0C0GxtaXc6FpMzjpsanY/iZMwo03X8ChyMSQuWCso4YHnFVXzs7qKn+Rz1EFFja27pjCRzYOfmgw0DzM6TqTsN74ZqtbdjZNqogPG2KLFWoHKRhAGZZjOPHxHCtDUCBFPQZutOVdDeqNVRSWyejYS0+C1uApxyUmDTa9GZr0YCPBPQmKNEgv+i1woD663HqnvJBk5oJZP3BGHSz1B76aTAPQoHM2YzdVbHrSg737ro8feli3Z5ZMhkutdIWgW3wvj2HJ4byMzkEM4gXP5c6dAIMj6WIargaEo62yHLhrw==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MXuN7FKD4hZdDTQUg+iLnGeenoU5xO3tKAID3z49oZS14EN8frHAM985EwAAbtwzzBg6EMwVYEa/k+/YXtJScmlpqdVZjwLFqw8lmTRtp1HV2iqRdAbPY5QfMqBqsaC2fkPDA0+UA6HFyqWdgRvX754qIHw5CPz8grycHz/KFd9rwKyut0jmfac5IQnufsI8SiHYfSlCZBUbtAx0/WspuhTjqxROKIghkWRWZ3L1jm5wZYC2CLEew+t3hFLHVfIt1N9AxZ7LRuPqsN5paNHWGsdISWwYKDz9WhX1s/AVh4uj2JgUINbyZlJtHUQMvftx22aOS4qrY9JcdMtQvFECgQ==
  • Authentication-results: esa2.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com
  • Cc: "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>, "Ross Lagerwall" <ross.lagerwall@xxxxxxxxxx>, Konrad Wilk <konrad.wilk@xxxxxxxxxx>, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
  • Delivery-date: Wed, 30 Mar 2022 10:19:43 +0000
  • Ironport-data: A9a23:uqPBYaiXAwwTjlsU6ZS5aiYhX161eBAKZh0ujC45NGQN5FlHY01je htvWGiCPfqMZ2rzctF2aN6w9RtSucSEzN8xGQdppHg3Qysb9cadCdqndUqhZCn6wu8v7a5EA 2fyTvGacajYm1eF/k/F3oDJ9CU6jefSLlbFILas1hpZHGeIcw98z0M78wIFqtQw24LhWFjV4 YmaT/D3YzdJ5RYlagr41IrbwP9flKyaVOQw5wFWiVhj5TcyplFNZH4tDfjZw0jQG+G4KtWSV efbpIxVy0uCl/sb5nFJpZ6gGqECaua60QFjERO6UYD66vRJjnRaPqrWqJPwwKqY4tmEt4kZ9 TlDiXC/YSgGF4uSvNU9aQtFGjEmL7xro7veE0Hq5KR/z2WeG5ft6/BnDUVwNowE4OdnR2pJ8 JT0KhhUMErF3bjvhuvmFK883azPL+GyVG8bkmtnwjzDS+4vXLjIQrnQ5M8e1zA17ixLNaiBO pFHN2c+BPjGS0RpAnVMCbRup7qhoyfFUjFji1XWnoNitgA/yyQuieOwYbI5YOeiRsJThE+U4 H3H+2fRBQsTP9iSjzGC9xqEluLJ2C/2Ro8WPLm57eJxxk2ewHQJDx8bXkf9puO24ma8Ud9CL 00f+gI1sLM/skesS7HAswaQ+SDe+ERGApwJTrN8uFrlJrfoDxixKUctaGBlWfwcptI/VWQ4x 3LSm8rbPGk62FGKck61+rCRpDK0HCEaK24eeCMJJTc4D8nfTJIb1UyWEIs6eEKhppisQGyrn WjWxMQrr+9L5fPnwZlX6rwub9iEgpHSBjA46QzMNo5OxlMoPdX1D2BEBLWy0BqhEGp7ZgTZ1 JTns5LHhAzrMX1rvHbXKAnqNOv0j8tpyBWG3TZS82AJrlxBAUKLc4FK+y1ZL0x0KMsCcjKBS BaN5VMMtMUKZiPwNfMfj2eN5yICl/KI+TPNDK28UzazSsIpKF/vEN9GOyZ8IFwBYGBzyPpia P93gO6nDGoACLQP8dZFb7x17FPf/QhnnTm7bcmil3yPiOPCDFbIGeZtGAbfNYgRsfLbyDg5B v4CbqNmPT0EC7agCsQWmKZORW03wY8TWMmu8pcNJ7fZSuekcUl4Y8LsLXoaU9UNt4xel/vS/ 2H7XUldyVHlgmbAJxnMYXdmAI4Dl74lxZ7nFUTA5WqV5kU=
  • Ironport-hdrordr: A9a23:93rV4aMjlDvZ+sBcTgWjsMiBIKoaSvp037BZ7TEKdfU1SL3gqy nApoV+6faZslcssTQb6LK90cq7MBXhHPxOkO4s1N6ZNWGMhILrFvAA0WKI+UyEJ8SKzJ8n6U 4PSchD4IKZNzdHZdGW2mSFOudl5PSs35qpi/33wnpgQGhRGtxdB6MSMGim+zVNNXF77TtTLv ahz/sCnSOpfTAvdcKwCmMeU+Wrnbf2qK4=
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On Wed, Mar 30, 2022 at 10:03:11AM +0200, Jan Beulich wrote:
> While not triggered by the trivial xen_nop in-tree patch on
> staging/master, that patch exposes a problem on the stable trees, where
> all functions have ENDBR inserted. When NOP-ing out a range, we need to
> account for this. Handle this right in livepatch_insn_len().
> 
> Fixes: 6974c75180f1 ("xen/x86: Livepatch: support patching CET-enhanced 
> functions")
> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
> ---
> Only build tested, as I don't have a live patching environment available.
> 
> For Arm this assumes that the patch_offset field starts out as zero; I
> think we can make such an assumption, yet otoh on x86 explicit
> initialization was added by the cited commit.
> 
> --- a/xen/include/xen/livepatch.h
> +++ b/xen/include/xen/livepatch.h
> @@ -90,7 +90,7 @@ static inline
>  unsigned int livepatch_insn_len(const struct livepatch_func *func)
>  {
>      if ( !func->new_addr )
> -        return func->new_size;
> +        return func->new_size - func->patch_offset;
>  
>      return ARCH_PATCH_INSN_SIZE;
>  }

Don't you also need to move the call to livepatch_insn_len() in
arch_livepatch_apply() after func->patch_offset has been adjusted to
account for ENDBR presence?

Thanks, Roger.



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.