Messages in this thread Patch in this message | | | Date | Thu, 16 Feb 2006 23:23:15 -0800 | From | Andrew Morton <> | Subject | Re: 2.6.16-rc3 macromedia flash regression... |
| |
Ernst Herzberg <list-lkml@net4u.de> 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@osdl.org> > 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: _ - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |