lkml.org 
[lkml]   [2020]   [Apr]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH 3/3] floppy: suppress UBSAN warning in setup_rw_floppy()
On Wed, Apr 22, 2020 at 11:20:23AM +0300, Denis Efremov wrote:
> What do you think about changing it this way?
>
> struct floppy_raw_cmd {
>
> unsigned char rate;
>
> -#define FD_RAW_CMD_SIZE 16
> +#define FD_RAW_CMD_SIZE 33
> #define FD_RAW_REPLY_SIZE 16
>
> unsigned char cmd_count;
> - unsigned char cmd[FD_RAW_CMD_SIZE];
> - unsigned char reply_count;
> - unsigned char reply[FD_RAW_REPLY_SIZE];
> + union {
> + struct {
> + unsigned char reserved[16];
> + unsigned char reply_count;
> + unsigned char reply[FD_RAW_REPLY_SIZE];
> + };
> + unsigned char cmd[FD_RAW_CMD_SIZE];
> + };

I don't think we can just change FD_RAW_CMD_SIZE or cmd as that could
break userspace. But otherwise, yes something very much like that:

> #define FD_RAW_CMD_SIZE 16
> #define FD_RAW_REPLY_SIZE 16
> +#define FD_RAW_FULL_CMD_SIZE (FD_RAW_CMD_SIZE + 1 + FD_RAW_CMD_SIZE)
>
> unsigned char cmd_count;
> - unsigned char cmd[FD_RAW_CMD_SIZE];
> - unsigned char reply_count;
> - unsigned char reply[FD_RAW_REPLY_SIZE];
> + union {
> + struct {
> + unsigned char cmd[FD_RAW_CMD_SIZE];
> + unsigned char reply_count;
> + unsigned char reply[FD_RAW_REPLY_SIZE];
> + };
> + unsigned char full_cmd[FD_RAW_FULL_CMD_SIZE];
> + };

> int track;
>
> Denis
---end quoted text---

\
 
 \ /
  Last update: 2020-04-22 10:24    [W:0.042 / U:0.132 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site