lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <aLbA1Ma9Cig3gbWV@smile.fi.intel.com>
Date: Tue, 2 Sep 2025 13:03:00 +0300
From: Andy Shevchenko <andriy.shevchenko@...el.com>
To: Jean-François Lessard <jefflessard3@...il.com>
Cc: Andy Shevchenko <andy@...nel.org>,
	Geert Uytterhoeven <geert@...ux-m68k.org>,
	linux-kernel@...r.kernel.org
Subject: Re: [PATCH 2/5] auxdisplay: linedisp: display static message when
 length <= display size

On Sun, Aug 31, 2025 at 10:00:26PM -0400, Jean-François Lessard wrote:
> Currently, when a message shorter than the display size is written, the
> content wraps around (e.g., "123" on a 4-digit display shows "1231")
> without scrolling, which is confusing and unintuitive.
> 
> Change behavior to display short messages statically with space padding
> (e.g. "123 ") while only scrolling messages longer than the display width.
> This provides more natural behavior that aligns with user expectations
> and current linedisp_display() kernel-doc.
> 
> The scroll logic is also consolidated into a helper function for clarity.
> 
> No API changes are introduced.

...

>  /**
>   * linedisp_scroll() - scroll the display by a character
>   * @t: really a pointer to the private data structure

>  	linedisp->scroll_pos %= linedisp->message_len;
>  
>  	/* rearm the timer */
> -	if (linedisp->message_len > num_chars && linedisp->scroll_rate)
> +	if (should_scroll(linedisp))
>  		mod_timer(&linedisp->timer, jiffies + linedisp->scroll_rate);
>  }
>  

...

>  	linedisp->message_len = count;
>  	linedisp->scroll_pos = 0;
>  
> -	/* update the display */
> -	linedisp_scroll(&linedisp->timer);
> +	if (should_scroll(linedisp)) {
> +		/* display scrolling message */
> +		linedisp_scroll(&linedisp->timer);
> +	} else {
> +		/* display static message */
> +		memset(linedisp->buf, ' ', linedisp->num_chars);
> +		memcpy(linedisp->buf, linedisp->message,
> +		       umin(linedisp->num_chars, linedisp->message_len));
> +		linedisp->ops->update(linedisp);
> +	}

Hmm... But it seems the linedisp_scroll already has a check, why do we need
an additional one here? Perhaps we need to pad a message somewhere else and
guarantee it won't ever be less than num_chars?

-- 
With Best Regards,
Andy Shevchenko



Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ