From: <charley.ashbringer@gmail.com>
To: "'Greg KH'" <gregkh@linuxfoundation.org>
Cc: <linux-usb@vger.kernel.org>, <thomas@winischhofer.net>
Subject: RE: [PATCH 1/4] USB: sisusbvga: change the char buffer from char to u8 for sisusb_write_mem_bulk and sisusb_send_bulk_msg
Date: Fri, 10 Jul 2020 01:23:52 -0400 [thread overview]
Message-ID: <09b501d6567a$4d7dd7a0$e87986e0$@gmail.com> (raw)
In-Reply-To: <20200627112828.GA1596272@kroah.com>
> -----Original Message-----
> From: Greg KH <gregkh@linuxfoundation.org>
> Sent: Saturday, June 27, 2020 7:28 AM
> To: Changming Liu <charley.ashbringer@gmail.com>
> Cc: linux-usb@vger.kernel.org; thomas@winischhofer.net
> Subject: Re: [PATCH 1/4] USB: sisusbvga: change the char buffer from char
to
> u8 for sisusb_write_mem_bulk and sisusb_send_bulk_msg
>
> On Fri, Jun 26, 2020 at 03:34:14PM -0400, Changming Liu wrote:
> > This patch changes the types of char buffer declarations
> > as well as passed-in parameters to u8 for the function
> > sisusb_write_mem_bulk and sisusb_send_bulk_msg to aviod
> > any related UB.
> >
> > This patch also change the local buf[4] of sisusb_write_mem_bulk
> > to u8. This fixed an undefined behavior, since buf can be filled
> > with data from user space, thus can be negative given it's signed,
> > and its content is being left-shifted. Left-shifting a negative
> > value is undefined behavior. It's fixed by changing the buf from
> > char to u8.
>
> In looking at this closer, it doesn't make sense to change the function
> parameters here, as everything that deals with the pointer already
> handles the change properly.
>
Quite, no security issue could possibly be raised without
these unnecessary changes.
>
> >
> > Signed-off-by: Changming Liu <charley.ashbringer@gmail.com>
> > ---
> > drivers/usb/misc/sisusbvga/sisusb.c | 14 +++++++-------
> > 1 file changed, 7 insertions(+), 7 deletions(-)
> >
> > diff --git a/drivers/usb/misc/sisusbvga/sisusb.c
> b/drivers/usb/misc/sisusbvga/sisusb.c
> > index fc8a5da..4aa717a 100644
> > --- a/drivers/usb/misc/sisusbvga/sisusb.c
> > +++ b/drivers/usb/misc/sisusbvga/sisusb.c
> > @@ -327,7 +327,7 @@ static int sisusb_bulkin_msg(struct sisusb_usb_data
> *sisusb,
> > */
> >
> > static int sisusb_send_bulk_msg(struct sisusb_usb_data *sisusb, int ep,
int
> len,
> > - char *kernbuffer, const char __user *userbuffer, int index,
> > + u8 *kernbuffer, const u8 __user *userbuffer, int index,
>
> So the kernbuffer pointer might want to be changed, but in looking at
> the code, there's no difference here, it can be left alone.
>
> The userbuffer does not need to be changed at all.
>
> > static int sisusb_write_mem_bulk(struct sisusb_usb_data *sisusb, u32
addr,
> > - char *kernbuffer, int length, const char __user *userbuffer,
> > + u8 *kernbuffer, int length, const u8 __user *userbuffer,
>
> Same here, these do not need to be changed.
Totally agree.
>
> > int index, ssize_t *bytes_written)
> > {
> > struct sisusb_packet packet;
> > @@ -761,7 +761,7 @@ static int sisusb_write_mem_bulk(struct
> sisusb_usb_data *sisusb, u32 addr,
> > u8 swap8, fromkern = kernbuffer ? 1 : 0;
> > u16 swap16;
> > u32 swap32, flag = (length >> 28) & 1;
> > - char buf[4];
> > + u8 buf[4];
>
> That is what should be changed, and in looking at the code path, I think
> that's it here.
>
> Sorry for taking you down the wrong path, but I think you should only
It's totally fine, I took this chance to thoroughly read the code
and learned a lot about how a typical linux driver is written : p
> change things that actually matter, and the above api changes don't
> change anything at all, right?
Yes, this is exactly what I felt when I was compiling the chances.
I really don't see necessity in the changes except the one
that has security implication.
Thanks for the feedback, these back-and-forth deepen my understanding
both of the kernel and how to submit patch.
Sorry for this late reply, I have been catching a deadline for the
past several days :( I'll submit another patch about the change with
security implication shortly.
Best regards,
Changming
next prev parent reply other threads:[~2020-07-10 5:29 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-06-26 19:34 [PATCH 0/4] USB: sisusbvga: cleaning up char buffers to u8 buffer Changming Liu
2020-06-26 19:34 ` [PATCH 1/4] USB: sisusbvga: change the char buffer from char to u8 for sisusb_write_mem_bulk and sisusb_send_bulk_msg Changming Liu
2020-06-27 11:28 ` Greg KH
2020-07-10 5:23 ` charley.ashbringer [this message]
2020-06-26 19:34 ` [PATCH 2/4] USB: sisusbvga: change the buffer members in sisusb_usb_data from char to u8 Changming Liu
2020-06-27 11:29 ` Greg KH
2020-06-26 19:34 ` [PATCH 3/4] USB: sisusbvga: change the buffer in sisusb_recv_bulk_msg " Changming Liu
2020-06-27 11:30 ` Greg KH
2020-06-26 19:34 ` [PATCH 4/4] USB: sisusbvga: change the buffers in sisusb_read_mem_bulk " Changming Liu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='09b501d6567a$4d7dd7a0$e87986e0$@gmail.com' \
--to=charley.ashbringer@gmail.com \
--cc=gregkh@linuxfoundation.org \
--cc=linux-usb@vger.kernel.org \
--cc=thomas@winischhofer.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).