--- 2.6/fs/select.c 2004-03-14 14:28:28.000000000 +0100 +++ build-2.6/fs/select.c 2004-03-14 19:08:57.000000000 +0100 @@ -223,25 +223,25 @@ break; if (!(bit & all_bits)) continue; + mask = DEFAULT_POLLMASK; file = fget(i); if (file) { f_op = file->f_op; - mask = DEFAULT_POLLMASK; if (f_op && f_op->poll) mask = (*f_op->poll)(file, retval ? NULL : wait); fput(file); - if ((mask & POLLIN_SET) && (in & bit)) { - res_in |= bit; - retval++; - } - if ((mask & POLLOUT_SET) && (out & bit)) { - res_out |= bit; - retval++; - } - if ((mask & POLLEX_SET) && (ex & bit)) { - res_ex |= bit; - retval++; - } + } + if ((mask & POLLIN_SET) && (in & bit)) { + res_in |= bit; + retval++; + } + if ((mask & POLLOUT_SET) && (out & bit)) { + res_out |= bit; + retval++; + } + if ((mask & POLLEX_SET) && (ex & bit)) { + res_ex |= bit; + retval++; } } if (res_in)