Re: 2.6.16-rc3 macromedia flash regression...

From: Ernst Herzberg
Date: Fri Feb 17 2006 - 14:36:06 EST


On Freitag 17 Februar 2006 08:23, Andrew Morton wrote:
> Ernst Herzberg <list-lkml@xxxxxxxx> wrote:
> > .... or not regession, that's the question.
> >
> > 2.6.16-rc2 works without problems.
> >
> > With -rc3 a .swf that opens a ip connection back to the server takes
> > ages to load. strace shows that the player hangs for long times in
> > select().
> >
> > Digging through the changelog brings up
> >
> > commit 643a654540579b0dcc7a206a4a7475276a41aff0
> > Author: Andrew Morton <akpm@xxxxxxxx>
> > Date: Sat Feb 11 17:55:52 2006 -0800
> >
> > [PATCH] select: fix returned timeval
>
> y'know, when I sent that patch out to reviewers I said "Could you guys
> please double-check this like hawks? Especially the handy-dandy new
> timespec/timeval comparison functions. I invariably screw that sort of
> thing up."
>
> Does this help?
>
>
> diff -puN fs/select.c~select-time-comparison-fixes fs/select.c
> --- devel/fs/select.c~select-time-comparison-fixes 2006-02-16
> 23:17:54.000000000 -0800 +++ devel-akpm/fs/select.c 2006-02-16
> 23:19:21.000000000 -0800
> @@ -404,7 +404,7 @@ asmlinkage long sys_select(int n, fd_set
> goto sticky;
> rtv.tv_usec = jiffies_to_usecs(do_div((*(u64*)&timeout), HZ));
> rtv.tv_sec = timeout;
> - if (timeval_compare(&rtv, &tv) < 0)
> + if (timeval_compare(&rtv, &tv) >= 0)
> rtv = tv;
> if (copy_to_user(tvp, &rtv, sizeof(rtv))) {
> sticky:
> @@ -471,7 +471,7 @@ asmlinkage long sys_pselect7(int n, fd_s
> rts.tv_nsec = jiffies_to_usecs(do_div((*(u64*)&timeout), HZ)) *
> 1000;
> rts.tv_sec = timeout;
> - if (timespec_compare(&rts, &ts) < 0)
> + if (timespec_compare(&rts, &ts) >= 0)
> rts = ts;
> if (copy_to_user(tsp, &rts, sizeof(rts))) {
> sticky:
> @@ -775,7 +775,7 @@ asmlinkage long sys_ppoll(struct pollfd
> rts.tv_nsec = jiffies_to_usecs(do_div((*(u64*)&timeout), HZ)) *
> 1000;
> rts.tv_sec = timeout;
> - if (timespec_compare(&rts, &ts) < 0)
> + if (timespec_compare(&rts, &ts) >= 0)
> rts = ts;
> if (copy_to_user(tsp, &rts, sizeof(rts))) {
> sticky:
> diff -puN fs/compat.c~select-time-comparison-fixes fs/compat.c
> --- devel/fs/compat.c~select-time-comparison-fixes 2006-02-16
> 23:17:54.000000000 -0800 +++ devel-akpm/fs/compat.c 2006-02-16
> 23:19:33.000000000 -0800
> @@ -1757,7 +1757,7 @@ asmlinkage long compat_sys_select(int n,
> goto sticky;
> rtv.tv_usec = jiffies_to_usecs(do_div((*(u64*)&timeout), HZ));
> rtv.tv_sec = timeout;
> - if (compat_timeval_compare(&rtv, &tv) < 0)
> + if (compat_timeval_compare(&rtv, &tv) >= 0)
> rtv = tv;
> if (copy_to_user(tvp, &rtv, sizeof(rtv))) {
> sticky:
> @@ -1834,7 +1834,7 @@ asmlinkage long compat_sys_pselect7(int
> rts.tv_sec++;
> rts.tv_nsec -= NSEC_PER_SEC;
> }
> - if (compat_timespec_compare(&rts, &ts) < 0)
> + if (compat_timespec_compare(&rts, &ts) >= 0)
> rts = ts;
> copy_to_user(tsp, &rts, sizeof(rts));
> }
> @@ -1934,7 +1934,7 @@ asmlinkage long compat_sys_ppoll(struct
> rts.tv_nsec = jiffies_to_usecs(do_div((*(u64*)&timeout), HZ)) *
> 1000;
> rts.tv_sec = timeout;
> - if (compat_timespec_compare(&rts, &ts) < 0)
> + if (compat_timespec_compare(&rts, &ts) >= 0)
> rts = ts;
> if (copy_to_user(tsp, &rts, sizeof(rts))) {
> sticky:
> _

---------------------------

The patch does _not_ fix the problem.

sorry...
<earny/>
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/