Received: by 2002:a25:7ec1:0:0:0:0:0 with SMTP id z184csp1702709ybc; Wed, 13 Nov 2019 03:04:08 -0800 (PST) X-Google-Smtp-Source: APXvYqzrefSJsK6X9jultunW/yucpyTCxh1qnGs6iE6hBSbPWOxIg3JUB6sqatrmw2aiEHU4cCb3 X-Received: by 2002:aa7:c695:: with SMTP id n21mr2823681edq.204.1573643048825; Wed, 13 Nov 2019 03:04:08 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1573643048; cv=none; d=google.com; s=arc-20160816; b=oxQuJfCleimf9P9LQu5W/V4Q3XqC5FWnURwszeV2NSneEaOs52qoA7bE6xVoiOlhGb T+rwxZljRuHGFfT+mny7wUPx7tYwUEmnihL2g0TrBpzGdEF3DhtA80TvbqGI5XnP/ebG feIukZRhXvFBSj5ztp/G+P0HgYH4GSAJmgR0QULYdI5NPFbrlyg3CmKqaC7pvPq5Vr4o Gb87/FWxPJskAtVAD9TDyJC/kEHYLg9F63tiZRnkmJcjSBCN6rBbxTm8UW6mk3KMZbFM 5+ftc8arMPNiE2YRZmkfeJNFJLFNvtcPc8cfUP8QU/44TO64IffzCtSwA7cjkLTO8VAR GVsw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :message-id:in-reply-to:subject:cc:to:from:date:dkim-signature; bh=z8U8YIFyMuBLWWfftfuzwfV1tgtcYC8QoWKpg0jy5xI=; b=RRlGLhOGpz6qDaPzwrbSUOwDwePh2+HuHCRP2k36rafp7ZQN3WsoOdJRWEGvpokB9z hjQC4FeJmficswBm1/MFaaCp+AXHTqQPZvRBRF4I2CPzvj837z5OpVyhfFBv53p3lSei FLzkTc8zrl06x9JzvXBgZQCBTz88MnE/YmMSQuken7U48kc3hMmww0t0B4l9PpRj3voE 6txLVpXUN9E6sUKTRunlfnzRN23j/dXu0NCu03Khfij7X+RfI/v2tXvG7qOT1kofjrI3 p22gbOO3bkPbcnIPDvn2KVM8uNx9LkKs+cbLp6ImXhCLpHFQW7XhopVUaQU5Qk34lpfG xHYA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=iw74jyK2; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id g6si1270354edk.210.2019.11.13.03.03.43; Wed, 13 Nov 2019 03:04:08 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=iw74jyK2; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727777AbfKMLCR (ORCPT + 99 others); Wed, 13 Nov 2019 06:02:17 -0500 Received: from mail.kernel.org ([198.145.29.99]:51354 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726165AbfKMLCQ (ORCPT ); Wed, 13 Nov 2019 06:02:16 -0500 Received: from pobox.suse.cz (prg-ext-pat.suse.com [213.151.95.130]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id A71982245D; Wed, 13 Nov 2019 11:02:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1573642936; bh=2sFyRcCYHdBNrqaRNSf8B+NvRP5DzhSpWcrT3BMDuV0=; h=Date:From:To:cc:Subject:In-Reply-To:References:From; b=iw74jyK2NRY22Dg4VFYqkRLGJAzdn7UE5JbKQXEF8fwh8IEIGYEmi/9PFH1b6t6/X 4znRXwGJaAoAeKZZrfx/cPBjUTBnPdqBwHjF76DAemk2Mhl//5tCFlRqCMxYOpNN0Q 9eoOvTfoyuxynN/Ugf+ra69umleegJNyuGuStuDY= Date: Wed, 13 Nov 2019 12:02:11 +0100 (CET) From: Jiri Kosina To: Pavel Machek cc: Greg Kroah-Hartman , linux-kernel@vger.kernel.org, stable@vger.kernel.org, Jason Gerecke , Aaron Armstrong Skomra Subject: Re: [PATCH 4.19 027/125] HID: wacom: generic: Treat serial number and related fields as unsigned In-Reply-To: <20191113104724.GD32553@amd> Message-ID: References: <20191111181438.945353076@linuxfoundation.org> <20191111181444.186103315@linuxfoundation.org> <20191113104724.GD32553@amd> User-Agent: Alpine 2.21 (LSU 202 2017-01-01) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, 13 Nov 2019, Pavel Machek wrote: > > From: Jason Gerecke > > > > commit ff479731c3859609530416a18ddb3db5db019b66 upstream. > > > > The HID descriptors for most Wacom devices oddly declare the serial > > number and other related fields as signed integers. When these numbers > > are ingested by the HID subsystem, they are automatically sign-extended > > into 32-bit integers. We treat the fields as unsigned elsewhere in the > > kernel and userspace, however, so this sign-extension causes problems. > > In particular, the sign-extended tool ID sent to userspace as ABS_MISC > > does not properly match unsigned IDs used by xf86-input-wacom and libwacom. > > > > We introduce a function 'wacom_s32tou' that can undo the automatic sign > > extension performed by 'hid_snto32'. We call this function when processing > > the serial number and related fields to ensure that we are dealing with > > and reporting the unsigned form. We opt to use this method rather than > > adding a descriptor fixup in 'wacom_hid_usage_quirk' since it should be > > more robust in the face of future devices. > > > +++ b/drivers/hid/wacom.h > > @@ -205,6 +205,21 @@ static inline void wacom_schedule_work(s > > } > > } > > > > +/* > > + * Convert a signed 32-bit integer to an unsigned n-bit integer. Undoes > > + * the normally-helpful work of 'hid_snto32' for fields that use signed > > + * ranges for questionable reasons. > > + */ > > +static inline __u32 wacom_s32tou(s32 value, __u8 n) > > +{ > > + switch (n) { > > + case 8: return ((__u8)value); > > + case 16: return ((__u16)value); > > + case 32: return ((__u32)value); > > + } > > + return value & (1 << (n - 1)) ? value & (~(~0U << n)) : value; > > +} > > Can we do something like: > > BUG_ON(n>32); Please no BUG_ON()s in bitop helpers. Thanks, -- Jiri Kosina SUSE Labs