From nobody Sun Jun 14 17:20:45 2026 Received: from mail-pj1-f53.google.com (mail-pj1-f53.google.com [209.85.216.53]) (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 B2C7A3B2BA for ; Sat, 4 Apr 2026 02:31:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775269904; cv=none; b=ZXw4kZxn+nnJoPd3LZyJJ90H9Y2K5AO1BzzYx+1dbdl01/9xW+bOYdHH8MFJ0NSKJzRDFq3EBotrscVepfq3o/4IAaJJkJ70cL0tPD5sn2bVPYK2Chk15gj6S1EcpQ+YKHJT3GwBes5Q8wY+oTTf95/ESxRFSAGAEmHVzjl4Dq0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775269904; c=relaxed/simple; bh=uEdG4RE9oAAy1I1CrVj9QNxkodCET/GAH86iVq0Up78=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=b2LMC2ojLzioGKoCImbUGmMMY8i70f9puc9OVGOUSwKx5P1rPawz0ae2DQT9DQU2h/2UYo02n4nNVdENaVOC2AjbujRPjBKuBIoaGRCZv8qX7YZgQo5IAjp/F+RwjSgrowsoBfJHw6gxezXBQLrf93W1Qf46JXZU/d/hHn6g+6c= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=0x0f.com; spf=pass smtp.mailfrom=0x0f.com; dkim=pass (1024-bit key) header.d=0x0f.com header.i=@0x0f.com header.b=DIW7N4ez; arc=none smtp.client-ip=209.85.216.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=0x0f.com 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=0x0f.com header.i=@0x0f.com header.b="DIW7N4ez" Received: by mail-pj1-f53.google.com with SMTP id 98e67ed59e1d1-35dac556bb2so1531331a91.1 for ; Fri, 03 Apr 2026 19:31:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=0x0f.com; s=google; t=1775269902; x=1775874702; 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=h5NziYcKOVo7Uumfi9SQ/ACvnOT/ieelouTjz/KaE3M=; b=DIW7N4ezZBrm/ays/50EHZ+UqoyPtrstuK9WcqIZoUynzkTxqJE8VQ+3wtQkEjds0p 7tRplTMxwHJ0J326jS9wHKdO3u5L4W07SAplEMVrUGKTzOy5wP2Mfxe6IIuJ5PcXF9wJ kaXn9jPICODoeB8DXwvsveBgJcpoAFFuXANG4= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775269902; x=1775874702; 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=h5NziYcKOVo7Uumfi9SQ/ACvnOT/ieelouTjz/KaE3M=; b=Xk/To4OeTRR1PkNxNz8JxT4awpny+/lfArdN6I/80fDzp89rV3Guwn1ZL7l8cZkCGt rRAKHYE2STRDb/z/0euaX1MsmsyobqCDe5unNAHAG9LUDHoU0ebJGFm5imrnrP3PWc5P QTpYDwHxY5vuPXlYDaM9LWdkL5LZlL98rs4vLTC6hRy9/xgUoO0V0bljjIvnclbwPdLZ XwYPlJ6z/F+VeYM/jq+1UB4qSc3Kd6wduXhWIU5S+b8DNg/ypElOIo/ZlMYvw6DtAdDL VggzljxKLLfczgBKNiyXnBGdix7mL/lfcgVmqbvzUwIE57JZXkhBVzDuOP5Vh52ZLm5p r2lQ== X-Forwarded-Encrypted: i=1; AJvYcCXEfcjZx5+glHF/JUQn/LwGBZe2KI6FM6zVFF24BZ4yqsnGsfnhGgK7w/1ETXJfsKIAoEzm29BGsjYFRsQ=@vger.kernel.org X-Gm-Message-State: AOJu0Yzi0kPVR3UzfZMOlRf+TDg6W0gR/NUUIk6rBlZop6vRsAuk4vtu hhuaPpuif3tV85cQ23+nTKJ04lMxk7c7aa40UOyq/bjYhB2rRVwucJVflQOfe1J0jso= X-Gm-Gg: AeBDiet+NmrT4rKiBCSVheErHUu1AKhDPDO3hahH/E2PD3YEpDNcGgXG40Lp08gLtrb 4lxYf953j4SlxviLyTzhHGdFrqAcwRsG0V+eA3xg5jMDnc3zuxyIiUvuJANd48EGCFqoOLBrtBz 87kHZzziXr3UWEcRHAe5li0uGVlbKzYF1niIzdARfHahdEj2RI1hdOo5Gj0zFV9ddrWukJLugKw jHOVeX351Hd281UKiHOqtGyVD5yy78NSkgi2nz+Gg7AzJcqQiqEjWnGO6cyHJr4924TIYAB9UgX jPX68IHd+Ni74fmJCzzPmZUfyYm7KQodsLAPxP5SUdR4ZqJ+7d/TYFgYjbc1wdxDWOfY8c7MDJa 9x9l0j4mbsO4tDZIks8lJA868Gz4gB6xjcS2mUceBjJRAUc4diaqf2scOhd7P1H3hk2u2bnVuMo 3uJSVo5dqj+Vlib1ZgVeNHgdFoktnj3vdK26kWnME9iR2D4t11CEmQDI4IYXfj X-Received: by 2002:a17:90b:48c6:b0:35b:9ab6:1d4a with SMTP id 98e67ed59e1d1-35de697359emr4372534a91.18.1775269902154; Fri, 03 Apr 2026 19:31:42 -0700 (PDT) Received: from shiro (p1866070-ipxg00f01sizuokaden.shizuoka.ocn.ne.jp. [180.1.30.70]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-35dbe937925sm16440543a91.12.2026.04.03.19.31.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 03 Apr 2026 19:31:41 -0700 (PDT) From: Daniel Palmer To: gerg@linux-m68k.org, christoph.plattner@gmx.at Cc: geert@linux-m68k.org, linux-m68k@lists.linux-m68k.org, linux-kernel@vger.kernel.org, sashal@kernel.org, Daniel Palmer Subject: [PATCH v2] m68k: Fix task info flags handling for 68000 Date: Sat, 4 Apr 2026 11:31:08 +0900 Message-ID: <20260404023108.2495351-1-daniel@0x0f.com> 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" The logic for deciding what to do after a syscall should be checking if any of the lower byte bits are set and then checking if the reschedule bit is set. Currently we are loading the top word, checking if any bits are set (which never seems to be true) and thus jumping over loading the whole long and checking if the reschedule bit is set. We get the thread info in two places so split that logic out in a macro and then fix the code so that it loads the byte of the flags we need to check, checks if anything is set and then checks if the reschedule bit in particular is set. Reported-by: Christoph Plattner Signed-off-by: Daniel Palmer --- v2: Only load the lower byte of the flags as that's all we need. This change was suggested by Greg and I tested it still works. arch/m68k/68000/entry.S | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/arch/m68k/68000/entry.S b/arch/m68k/68000/entry.S index 72e95663b62f..c257cc415c47 100644 --- a/arch/m68k/68000/entry.S +++ b/arch/m68k/68000/entry.S @@ -18,6 +18,13 @@ =20 .text =20 +/* get thread_info pointer into a2 */ + .macro getthreadinfo + movel %sp,%d1 + andl #-THREAD_SIZE,%d1 + movel %d1,%a2 + .endm + .globl system_call .globl resume .globl ret_from_exception @@ -70,9 +77,8 @@ ENTRY(system_call) =20 movel %sp@(PT_OFF_ORIG_D0),%d0 =20 - movel %sp,%d1 /* get thread_info pointer */ - andl #-THREAD_SIZE,%d1 - movel %d1,%a2 + /* Doing a trace ? */ + getthreadinfo btst #(TIF_SYSCALL_TRACE%8),%a2@(TINFO_FLAGS+(31-TIF_SYSCALL_TRACE)/8) jne do_trace cmpl #NR_syscalls,%d0 @@ -96,16 +102,15 @@ Luser_return: /* heavy interrupt load*/ andw #ALLOWINT,%sr =20 - movel %sp,%d1 /* get thread_info pointer */ - andl #-THREAD_SIZE,%d1 - movel %d1,%a2 + getthreadinfo 1: - move %a2@(TINFO_FLAGS),%d1 /* thread_info->flags */ + /* check if any of the flags are set */ + moveb %a2@(TINFO_FLAGS + 3),%d1 /* thread_info->flags (low 8 bits) */ jne Lwork_to_do RESTORE_ALL =20 Lwork_to_do: - movel %a2@(TINFO_FLAGS),%d1 /* thread_info->flags */ + /* check if reschedule needs to be called */ btst #TIF_NEED_RESCHED,%d1 jne reschedule =20 --=20 2.51.0