Re: Serial buffer memory leak

2007-08-08 Thread Paul Fulghum
On Wed, 2007-08-08 at 16:32 +0100, Alan Cox wrote: > Ok try this for size folks. Use tty->flags bits for the flush status. > Wait for the flag to clear again before returning > Fix the doc error noted > Fix flush of empty queue leaving stale flushpending > > > Signed-off-by: Alan Cox <[EMAIL

Re: Serial buffer memory leak

2007-08-08 Thread Alan Cox
On Wed, 8 Aug 2007 16:16:06 +0100 Alan Cox <[EMAIL PROTECTED]> wrote: > > tty_buffer_flush() needs to wait for buf.flushpending to clear. > Should probably make the flushpending an atomic bit op to avoid taking > and retaking the lock. Ok try this for size folks. Use tty->flags bits for the

Re: Serial buffer memory leak

2007-08-08 Thread Alan Cox
> tty_buffer_flush() needs to wait for buf.flushpending to clear. Not 100% sure it does as its no different to events really occuring with a possible timing. Trivial to wait_event on the read queue for this however and definitely worth doing to be sure. Should probably make the flushpending an

Re: Serial buffer memory leak

2007-08-08 Thread Paul Fulghum
On Wed, 2007-08-08 at 16:28 +0200, Laurent Pinchart wrote: > The patch fixes the problem (at least under the test conditions that lead me > to discover it in the first place). Thanks Alan. It works here also, but I see a problem. By deferring the flush, ioctl(TCFLSH) returns immediately even

Re: Serial buffer memory leak

2007-08-08 Thread Frederik Deweerdt
On Wed, Aug 08, 2007 at 02:45:32PM +0100, Alan Cox wrote: > > I'm not familiar enough with the tty code to decide what the proper fix > > should > > be. I'll try to write a patch if someone could point me in the right > > direction. > > Something like this perhaps ? > [] > - * flush all

Re: Serial buffer memory leak

2007-08-08 Thread Laurent Pinchart
On Wednesday 08 August 2007 16:11, Paul Fulghum wrote: > On Wed, 2007-08-08 at 14:45 +0100, Alan Cox wrote: > > > I'm not familiar enough with the tty code to decide what the proper fix > > > should be. I'll try to write a patch if someone could point me in the > > > right direction. > > > >

Re: Serial buffer memory leak

2007-08-08 Thread Paul Fulghum
On Wed, 2007-08-08 at 14:45 +0100, Alan Cox wrote: > > I'm not familiar enough with the tty code to decide what the proper fix > > should > > be. I'll try to write a patch if someone could point me in the right > > direction. > > Something like this perhaps ? That looks good, a little better

Re: Serial buffer memory leak

2007-08-08 Thread Alan Cox
> I'm not familiar enough with the tty code to decide what the proper fix > should > be. I'll try to write a patch if someone could point me in the right > direction. Something like this perhaps ? diff -u --new-file --recursive --exclude-from /usr/src/exclude

Re: Serial buffer memory leak

2007-08-08 Thread Paul Fulghum
Laurent Pinchart wrote: Patch c5c34d4862e18ef07c1276d233507f540fb5a532 (tty: flush flip buffer on ldisc input queue flush) introduces a race condition which can lead to memory leaks. The problem can be triggered when tcflush() is called when data are being pushed to the line discipline

Serial buffer memory leak

2007-08-08 Thread Laurent Pinchart
Hi everybody. Patch c5c34d4862e18ef07c1276d233507f540fb5a532 (tty: flush flip buffer on ldisc input queue flush) introduces a race condition which can lead to memory leaks. The problem can be triggered when tcflush() is called when data are being pushed to the line discipline driver by

Serial buffer memory leak

2007-08-08 Thread Laurent Pinchart
Hi everybody. Patch c5c34d4862e18ef07c1276d233507f540fb5a532 (tty: flush flip buffer on ldisc input queue flush) introduces a race condition which can lead to memory leaks. The problem can be triggered when tcflush() is called when data are being pushed to the line discipline driver by

Re: Serial buffer memory leak

2007-08-08 Thread Paul Fulghum
Laurent Pinchart wrote: Patch c5c34d4862e18ef07c1276d233507f540fb5a532 (tty: flush flip buffer on ldisc input queue flush) introduces a race condition which can lead to memory leaks. The problem can be triggered when tcflush() is called when data are being pushed to the line discipline

Re: Serial buffer memory leak

2007-08-08 Thread Alan Cox
I'm not familiar enough with the tty code to decide what the proper fix should be. I'll try to write a patch if someone could point me in the right direction. Something like this perhaps ? diff -u --new-file --recursive --exclude-from /usr/src/exclude

Re: Serial buffer memory leak

2007-08-08 Thread Paul Fulghum
On Wed, 2007-08-08 at 14:45 +0100, Alan Cox wrote: I'm not familiar enough with the tty code to decide what the proper fix should be. I'll try to write a patch if someone could point me in the right direction. Something like this perhaps ? That looks good, a little better than the

Re: Serial buffer memory leak

2007-08-08 Thread Laurent Pinchart
On Wednesday 08 August 2007 16:11, Paul Fulghum wrote: On Wed, 2007-08-08 at 14:45 +0100, Alan Cox wrote: I'm not familiar enough with the tty code to decide what the proper fix should be. I'll try to write a patch if someone could point me in the right direction. Something like this

Re: Serial buffer memory leak

2007-08-08 Thread Frederik Deweerdt
On Wed, Aug 08, 2007 at 02:45:32PM +0100, Alan Cox wrote: I'm not familiar enough with the tty code to decide what the proper fix should be. I'll try to write a patch if someone could point me in the right direction. Something like this perhaps ? [] - * flush all the buffers

Re: Serial buffer memory leak

2007-08-08 Thread Paul Fulghum
On Wed, 2007-08-08 at 16:28 +0200, Laurent Pinchart wrote: The patch fixes the problem (at least under the test conditions that lead me to discover it in the first place). Thanks Alan. It works here also, but I see a problem. By deferring the flush, ioctl(TCFLSH) returns immediately even

Re: Serial buffer memory leak

2007-08-08 Thread Alan Cox
tty_buffer_flush() needs to wait for buf.flushpending to clear. Not 100% sure it does as its no different to events really occuring with a possible timing. Trivial to wait_event on the read queue for this however and definitely worth doing to be sure. Should probably make the flushpending an

Re: Serial buffer memory leak

2007-08-08 Thread Alan Cox
On Wed, 8 Aug 2007 16:16:06 +0100 Alan Cox [EMAIL PROTECTED] wrote: tty_buffer_flush() needs to wait for buf.flushpending to clear. Should probably make the flushpending an atomic bit op to avoid taking and retaking the lock. Ok try this for size folks. Use tty-flags bits for the flush

Re: Serial buffer memory leak

2007-08-08 Thread Paul Fulghum
On Wed, 2007-08-08 at 16:32 +0100, Alan Cox wrote: Ok try this for size folks. Use tty-flags bits for the flush status. Wait for the flag to clear again before returning Fix the doc error noted Fix flush of empty queue leaving stale flushpending Signed-off-by: Alan Cox [EMAIL PROTECTED]