From nobody Sun Feb 8 00:25:47 2026 Received: from mail-pf1-f175.google.com (mail-pf1-f175.google.com [209.85.210.175]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 457D113D891 for ; Sat, 13 Dec 2025 12:04:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.175 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765627454; cv=none; b=hdgs8XhpIIGr6AExeqxadeDwSp4aRVESykkhUsTAxmO3cDYdmHXp/sFkK7apKMKJMOF+zOPUrF/0fSroYQlMDOwFZnFKhtoTuLu1D7tWvBJNFDQoJvmU0SO3MkIiaeEoIyNC/0f5S+utq5L8oZaWLhhGoh3cK4ydnJDmzJDzNdo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765627454; c=relaxed/simple; bh=yzs67KyH1NIfYYY657ZCVGTMcWOvRK6GdTbAsd2x7iE=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=PZIkiEUcei3M9alLFalvHjdcSdoG4BV/aswG/hP+te+cbCWgK6mKQCntQLOlNmazBVJ7m+iyp+Gwv5mOFuZ4oPeEegPOLY2oCJe4pgcHfxOziTiB90f63rufKzAd+JmzXqP6kO/DhQcvDde2vUGmlflBoTLZqN1M/kfjOIgu89o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=thingy.jp; spf=pass smtp.mailfrom=0x0f.com; dkim=pass (1024-bit key) header.d=thingy.jp header.i=@thingy.jp header.b=AXCEpLOK; arc=none smtp.client-ip=209.85.210.175 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=thingy.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=0x0f.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=thingy.jp header.i=@thingy.jp header.b="AXCEpLOK" Received: by mail-pf1-f175.google.com with SMTP id d2e1a72fcca58-7acd9a03ba9so2190392b3a.1 for ; Sat, 13 Dec 2025 04:04:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=thingy.jp; s=google; t=1765627451; x=1766232251; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=Ei8ywdXlXxvDh5vQP6qyXiLudvOCTn5oljiolbISDvU=; b=AXCEpLOKxA5btIOWALtUJLbUCeNg/YTBh7e3maTjMVpqht84YoxwFOXqSioDFeMjC4 clqn1pV6FyDlvEq+7jdc43v7yeP62eL1L/kvTjZYuNiU8Xdh8zyqKAJe0IeEm5J0iVo8 Xo4nyLFCU5X2MHNh1/GueXiYJopuiFtVpUg78= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765627451; x=1766232251; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=Ei8ywdXlXxvDh5vQP6qyXiLudvOCTn5oljiolbISDvU=; b=A1OpRCO4aSNv6oYFeEH3L6kAR6HcSgUJX5IcjJ1IWNEz6HccvP3VGIIhvF5YXAtYy6 gbVyWPRu8s3avtsmvBjNqZB2S2jtGBoBt6WT7g7kF1yT6G874a8IRwO2249fh2rYH1SZ y35FL8cWvBmOo6VPibg+p9qcBG59g82VUCcEQ46ItrPkl4EiFtLON5ihazoTU0fluzb9 7Ohx8D46ikN3VZHcGilZV+tQptPWoKPTj8+BN9LbRGGuRZLIJ/8IRtZMG8B2U39Ch6F7 jnoZhLOk6PRRF95auYJWD+BD7LeeNS2K2rH9HmBc/jCbSBEHkhh+7JMenLa3eY6mSodZ 8ebw== X-Forwarded-Encrypted: i=1; AJvYcCUFIscYAlLMF4Phk8YY20mmgemofw3+IFJHzJsNAovezSrrYKos7Cerd72d01MGttdQ0kzmm3lcQdKop9M=@vger.kernel.org X-Gm-Message-State: AOJu0Yyudi8acEDkNUQPSW+QcwGiK3EGd+tWZsiFf9A2N+iQhH8Osk0V aAl+9iv3JKmfGlUxovwcCL2t8V8ymskYVSRFrTGBHjpFePagX6nV+U4lfY2DAU0h4NWPgZAbWCO B8pUcx3g= X-Gm-Gg: AY/fxX4aaS1BnKtSJWnQbkLmdMINvUO5gm4nByvNmsf6p/mzGi5wOrgsNHTGGd/D46w MJF0A2ifp7SBod+HTTHfoMrDHSCWjN+mnG9NNsDyEZsRl0G0pYVTCHfhlZTCaVAAPsTPOE5aC3S nuzRAW+uCeA5Egu01NfQRqvx1Yv/PaQubC0TtOhHGOQTUxHbqUfjxhokR0CcW/BB32IhPIOjVJn dAkulakqcMSljLPUSKFjYZCQBY+D3j+oINp2G/rdcn3tFww1spQBsabd+ktwd4XBpb7OhV2ZWBG PPlZYj80M5kKBYoW7dZAlnM3I61mCRzNGP+kpUSq1Pkr6ksNc//BV4uVr2mLb3HKs7LYUecnYFV efP7v59voVmRmiVglGnSr3yIp0lCzGkqmIv9iRyt58FDrfBbtL5boljsqXa6wqEdcdrIL1dzXV3 O48Xm/bL3t8fB1ZEpzlTtYgQzTtt1rEih6l3gGTDQik0gD520Wq0bE3Py+Bn2+PVH0gqTKvyHpS EQ= X-Google-Smtp-Source: AGHT+IFhu4El5lM5dBAOIMKdzomSrPTOIqQiG3alVXt/ZNWVrpFkAuaDVRCa4Vc5YmZN1G1ScWJZsQ== X-Received: by 2002:a05:6a00:4107:b0:7e8:4398:b370 with SMTP id d2e1a72fcca58-7f669c8a7bbmr3801807b3a.67.1765627451246; Sat, 13 Dec 2025 04:04:11 -0800 (PST) Received: from kinako.work.home.arpa (p1344243-ipxg00a01sizuokaden.shizuoka.ocn.ne.jp. [114.145.20.243]) by smtp.googlemail.com with ESMTPSA id d2e1a72fcca58-7f4c585cde0sm7761084b3a.69.2025.12.13.04.04.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Dec 2025 04:04:10 -0800 (PST) From: Daniel Palmer To: gerg@linux-m68k.org, geert@linux-m68k.org Cc: linux-m68k@lists.linux-m68k.org, linux-kernel@vger.kernel.org, Daniel Palmer Subject: [PATCH] m68k: nommu: fix memmove() with differently aligned src and dest for 68000 Date: Sat, 13 Dec 2025 21:04:01 +0900 Message-ID: <20251213120401.3992567-1-daniel@thingy.jp> X-Mailer: git-send-email 2.51.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 68000 has different alignment needs to 68020+. memcpy() checks if the destination is aligned and does a smaller copy to fix the alignment and then critically for 68000 it checks if the source is still unaligned and if it is reverts to smaller copies. memmove() does not currently do the second part and malfunctions if one of the pointers is aligned and the other isn't. This is apparently getting triggered by printk. If I put breakpoints into the new checks added by this commit the first hit looks like this: memmove (n=3D205, src=3D0x2f3971 , dest=3D0x2f3980= ) at arch/m68k/lib/memmove.c:82 Signed-off-by: Daniel Palmer Acked-by: Greg Ungerer --- This is from my "make 68000 work again" backlog. I have had this fix for years and I think the few other people that have various 68000 hobby builds must have something similar. /root # uname -a uClinux buildroot 6.18.0-12420-gdc1a468a2724 #120 Sat Dec 13 20:42:45 JST 2= 025 m68k GNU/Linux /root # cat /proc/cpuinfo CPU: 68000 MMU: none FPU: none Clocking: 1179.1MHz BogoMips: 1758.00 Calibration: 879001600 loops /root # arch/m68k/lib/memmove.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/arch/m68k/lib/memmove.c b/arch/m68k/lib/memmove.c index 6519f7f349f6..e33f00b02e4c 100644 --- a/arch/m68k/lib/memmove.c +++ b/arch/m68k/lib/memmove.c @@ -24,6 +24,15 @@ void *memmove(void *dest, const void *src, size_t n) src =3D csrc; n--; } +#if defined(CONFIG_M68000) + if ((long)src & 1) { + char *cdest =3D dest; + const char *csrc =3D src; + for (; n; n--) + *cdest++ =3D *csrc++; + return xdest; + } +#endif if (n > 2 && (long)dest & 2) { short *sdest =3D dest; const short *ssrc =3D src; @@ -66,6 +75,15 @@ void *memmove(void *dest, const void *src, size_t n) src =3D csrc; n--; } +#if defined(CONFIG_M68000) + if ((long)src & 1) { + char *cdest =3D dest; + const char *csrc =3D src; + for (; n; n--) + *--cdest =3D *--csrc; + return xdest; + } +#endif if (n > 2 && (long)dest & 2) { short *sdest =3D dest; const short *ssrc =3D src; --=20 2.51.0