Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1750895AbdGYI6K (ORCPT ); Tue, 25 Jul 2017 04:58:10 -0400 Received: from ozlabs.org ([103.22.144.67]:36543 "EHLO ozlabs.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750757AbdGYI6J (ORCPT ); Tue, 25 Jul 2017 04:58:09 -0400 From: Jeremy Kerr To: linux-kernel@vger.kernel.org Cc: openbmc@lists.ozlabs.org, Jeremy Kerr , Peter Hurley Subject: [PATCH RFC] tty: don't force !TTYB_NORMAL flip buffers if not required Date: Tue, 25 Jul 2017 16:57:26 +0800 Message-Id: <1500973046-14268-1-git-send-email-jk@ozlabs.org> X-Mailer: git-send-email 2.7.4 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1524 Lines: 40 In change acc0f67f30, we introduced flip buffers that skipped allocation of the flags buffer for characters received with TTY_NORMAL flags. However, the slow path of tty_insert_flip_char() calls tty_insert_flip_string_flags() (providing a flag buffer pointer), which forces the buffer code to allocate a !TTYB_NORMAL buffer. If we took the slow path due to running out of buffer space, rather than seeing !TTY_NORMAL flags, we've needlessly allocated a flags buffer. This change uses tty_insert_flip_string_fixed_flag instead, which will allocate TTYB_NORMAL buffers if flag == TTY_NORMAL. Since we're only inserting one character, it's fine for the flag to be "fixed". Signed-off-by: Jeremy Kerr CC: Peter Hurley --- RFC: I'm certainly no expert on the tty layer, and perhaps there's a good reason to always allocate a flags buffer. However, this seems to relieve buffer pressure in my tests. --- include/linux/tty_flip.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/linux/tty_flip.h b/include/linux/tty_flip.h index c28dd52..15d03a1 100644 --- a/include/linux/tty_flip.h +++ b/include/linux/tty_flip.h @@ -26,7 +26,7 @@ static inline int tty_insert_flip_char(struct tty_port *port, *char_buf_ptr(tb, tb->used++) = ch; return 1; } - return tty_insert_flip_string_flags(port, &ch, &flag, 1); + return tty_insert_flip_string_fixed_flag(port, &ch, flag, 1); } static inline int tty_insert_flip_string(struct tty_port *port, -- 2.7.4