Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp4707246pxj; Wed, 12 May 2021 11:20:54 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzD16S0V4fi7gLGLFZBN4VwROGX8vPI0BTXsJ1axGJ0WNYbogGfPS87R5j5H4TU2gzeNcxS X-Received: by 2002:a17:906:3e89:: with SMTP id a9mr38128850ejj.405.1620843653765; Wed, 12 May 2021 11:20:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620843653; cv=none; d=google.com; s=arc-20160816; b=CrEEQ4W/tESeVw2DOKcqoksNLPfeRjrC/gYKx0GPh7D+R7oyhs60UpnnDLmNqo41m9 Q+E+IaSlOR45dB65gEwbhaSSxiDzG1CUisHrAPzVbGPvfuBVrwMDXmx5XeGgB3bx1kui Zgifkxv+14ux4xr7opnVkou9rM73Bzly9v/Abfy81S/w8pNf+oGGyHUlPxJI/n4hCw/+ 9gzJ6PJXWtDK6awzGCoj7s4GTct+/GCWDhKx1L/w9lyLYSB3F/GUzBKjLwCJ+sITh5Yt 6AcZfsK2PPmp9v7AAG/YL+8VIQSkVzx708LnyA3vHYR1HtYjodky9oIpK767xDZl4AQM 0DYg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=/W0332UXn/udKLiezwXgmCuXsu3WhmU5wSncssvH4yg=; b=e8fP96LANi6H3waqb7B3Gd6wUJeTLP7ckheZSeEOpcOTCwBCVKBZFqqZz4x4hepyUi yZFEDoSYGfpCkKIHG0hMhWAMBiRNTIurEzxuDod4ojDvcuqFhjGehXE4WLFHgV3Lc/lP x5Ml0cvYPCklNr5JERR/KLNpCMykyvIWNI1uaVuc7p+ADVH/2Dv4QRjYelKl6AcicYYT E8LjtFDqsVS/krixpF3d5uM04fLXgtCo3KfB5dpJL33cP7PPn9j/hUIzXShxeI7JRSAz nF/UnbJAKUk8N4n8q/DI8QUYkQE+ZAauSrctz6epqyNVdmkdSf7z+gXIPXT32z8Ss/zD PhVQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=wcGJ7KDA; 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=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id l23si349947edv.583.2021.05.12.11.20.26; Wed, 12 May 2021 11:20:53 -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=@linuxfoundation.org header.s=korg header.b=wcGJ7KDA; 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=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1352862AbhELSPk (ORCPT + 99 others); Wed, 12 May 2021 14:15:40 -0400 Received: from mail.kernel.org ([198.145.29.99]:42866 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241187AbhELQ0t (ORCPT ); Wed, 12 May 2021 12:26:49 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id C247861DB6; Wed, 12 May 2021 15:50:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1620834617; bh=SddqrF4pqme/pw1h5xa7nekd1GROY2vSDnG5flgcsSw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=wcGJ7KDAJ8zGqm5Ep0XB4IXkubqERnafc/Oh3RdtGkkZKP+TXcXdOZhS810BHKv3v 3D0ps6aVHbxmgLYtVT5cEcR3I3yGGtcOjhw24FdjmjvPnPxrqg35VKc3uOzEl+2sKR q8Oo5g2SPnZeDaBP8NChwdumfv14nqTnCswg+Twk= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Johan Hovold Subject: [PATCH 5.12 016/677] tty: mxser: fix TIOCSSERIAL jiffies conversions Date: Wed, 12 May 2021 16:41:02 +0200 Message-Id: <20210512144837.767599327@linuxfoundation.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210512144837.204217980@linuxfoundation.org> References: <20210512144837.204217980@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Johan Hovold commit be6cf583d24dfe87324dd2830d90fc056e0a6648 upstream. The port close_delay and closing wait parameters set by TIOCSSERIAL are specified in jiffies, while the values returned by TIOCGSERIAL are specified in centiseconds. Add the missing conversions so that TIOCSSERIAL works as expected also when HZ is not 100. Cc: stable@vger.kernel.org Signed-off-by: Johan Hovold Link: https://lore.kernel.org/r/20210407102334.32361-14-johan@kernel.org Signed-off-by: Greg Kroah-Hartman --- drivers/tty/mxser.c | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) --- a/drivers/tty/mxser.c +++ b/drivers/tty/mxser.c @@ -1208,19 +1208,26 @@ static int mxser_get_serial_info(struct { struct mxser_port *info = tty->driver_data; struct tty_port *port = &info->port; + unsigned int closing_wait, close_delay; if (tty->index == MXSER_PORTS) return -ENOTTY; mutex_lock(&port->mutex); + + close_delay = jiffies_to_msecs(info->port.close_delay) / 10; + closing_wait = info->port.closing_wait; + if (closing_wait != ASYNC_CLOSING_WAIT_NONE) + closing_wait = jiffies_to_msecs(closing_wait) / 10; + ss->type = info->type, ss->line = tty->index, ss->port = info->ioaddr, ss->irq = info->board->irq, ss->flags = info->port.flags, ss->baud_base = info->baud_base, - ss->close_delay = info->port.close_delay, - ss->closing_wait = info->port.closing_wait, + ss->close_delay = close_delay; + ss->closing_wait = closing_wait; ss->custom_divisor = info->custom_divisor, mutex_unlock(&port->mutex); return 0; @@ -1233,7 +1240,7 @@ static int mxser_set_serial_info(struct struct tty_port *port = &info->port; speed_t baud; unsigned long sl_flags; - unsigned int flags; + unsigned int flags, close_delay, closing_wait; int retval = 0; if (tty->index == MXSER_PORTS) @@ -1255,9 +1262,14 @@ static int mxser_set_serial_info(struct flags = port->flags & ASYNC_SPD_MASK; + close_delay = msecs_to_jiffies(ss->close_delay * 10); + closing_wait = ss->closing_wait; + if (closing_wait != ASYNC_CLOSING_WAIT_NONE) + closing_wait = msecs_to_jiffies(closing_wait * 10); + if (!capable(CAP_SYS_ADMIN)) { if ((ss->baud_base != info->baud_base) || - (ss->close_delay != info->port.close_delay) || + (close_delay != info->port.close_delay) || ((ss->flags & ~ASYNC_USR_MASK) != (info->port.flags & ~ASYNC_USR_MASK))) { mutex_unlock(&port->mutex); return -EPERM; @@ -1271,8 +1283,8 @@ static int mxser_set_serial_info(struct */ port->flags = ((port->flags & ~ASYNC_FLAGS) | (ss->flags & ASYNC_FLAGS)); - port->close_delay = ss->close_delay * HZ / 100; - port->closing_wait = ss->closing_wait * HZ / 100; + port->close_delay = close_delay; + port->closing_wait = closing_wait; if ((port->flags & ASYNC_SPD_MASK) == ASYNC_SPD_CUST && (ss->baud_base != info->baud_base || ss->custom_divisor !=