From: "Randy.Dunlap" <rddunlap@osdl.org>
To: Jim Nelson <james4765@verizon.net>
Cc: linux-kernel@vger.kernel.org, akpm@osdl.org
Subject: Re: [PATCH] ip2: fix compile warnings
Date: Sun, 19 Dec 2004 22:20:08 -0800 [thread overview]
Message-ID: <41C66F18.1000505@osdl.org> (raw)
In-Reply-To: <41C42DD2.9030205@verizon.net>
Jim Nelson wrote:
> Randy.Dunlap wrote:
>
>> james4765@verizon.net wrote:
>>
>>> This fixes the following compile errors in the ip2 and ip2main drivers:
>>>
>>> CC drivers/char/ip2main.o
>>> drivers/char/ip2main.c:470: warning: initialization from incompatible
>>> pointer type
>>
>>
>>> diff -urN --exclude='*~'
>>> linux-2.6.10-rc3-mm1-original/drivers/char/ip2main.c
>>> linux-2.6.10-rc3-mm1/drivers/char/ip2main.c
>>> --- linux-2.6.10-rc3-mm1-original/drivers/char/ip2main.c
>>> 2004-12-03 16:55:03.000000000 -0500
>>> +++ linux-2.6.10-rc3-mm1/drivers/char/ip2main.c 2004-12-17
>>> 16:24:24.094730049 -0500
>>> @@ -467,7 +466,7 @@
>>> static struct tty_operations ip2_ops = {
>>> .open = ip2_open,
>>> .close = ip2_close,
>>> - .write = ip2_write,
>>> + .write = (void *) ip2_write,
>>> .put_char = ip2_putchar,
>>> .flush_chars = ip2_flush_chars,
>>> .write_room = ip2_write_room,
>>
>>
>> The write() prototype in tty_operations is:
>> int (*write)(struct tty_struct * tty,
>> const unsigned char *buf, int count);
>>
>> Somehow the cast does eliminate the compiler warning (and give
>> a false sense of correctness).
>>
>> However, ip2main.c::ip2_write() should be modified like so:
>>
>> static int
>> ip2_write( PTTY tty, const unsigned char *pData, int count)
>>
>> and drop the cast and fix the ip2_write comment (drop old arg 2),
>> and fix the ip2_write() prototype.
>> But then you (someone) will have to decide how to handle the
>> dropped <user> parameter when calling i2Output()...
>> I don't know the answer to that.
>> I just changed <user> to 0 to get a clean build of ip2main.o,
>> but ip2/i2lib.c still needs some work.
>>
>
> Sorry for the constant n00b questions, but:
>
> Is there anything outside the kernel that could call tty_operations.write?
Sorry, I don't know the path to get to that code.
> drivers/input/serio/serport.c uses: (as an example)
>
> static int serport_serio_write(struct serio *serio, unsigned char data)
> {
> struct serport *serport = serio->port_data;
> return -(serport->tty->driver->write(serport->tty, &data, 1) != 1);
> }
>
> I'm guessing that something does copy_from_user() before
> tty_operations.write is called, but I don't know quite what that is.
>
> Can anyone to point me in the direction of where the user/kernel
> interface for tty devices is?
>
> Given the way this is set up -
>
> int (*write)(struct tty_struct * tty, const unsigned char *buf, int
> count);
>
> vs.
>
> ip2_write( PTTY tty, int user, const unsigned char *pData, int count)
>
> I don't even know if the driver would work - I think you'd have serious
> problems as it tries to dereference a pointer that is half-integer.
I didn't quite get the "half-integer" part...
Unless you mean that the function interface is just broken.
Yes, it is.
> Am I reading this wrong?
It looks to me like the Kconfig entry for CONFIG_COMPUTONE
should just use BROKEN instead of BROKEN_ON_SMP since its
.write function interface hasn't been updated.
--
~Randy
next prev parent reply other threads:[~2004-12-20 7:49 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-12-17 21:47 [PATCH] ip2: fix compile warnings james4765
2004-12-18 1:46 ` Randy.Dunlap
2004-12-18 13:17 ` Jim Nelson
2004-12-20 6:20 ` Randy.Dunlap [this message]
2004-12-18 2:14 ` Adrian Bunk
2004-12-18 3:16 ` Jim Nelson
2004-12-19 14:08 ` Adrian Bunk
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=41C66F18.1000505@osdl.org \
--to=rddunlap@osdl.org \
--cc=akpm@osdl.org \
--cc=james4765@verizon.net \
--cc=linux-kernel@vger.kernel.org \
/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