MEDIUM: poller: use atomic ops to update the fdtab mask

We don't need to lock the fdtab[].lock anymore since we only have one
modification left (update update_mask). Let's use an atomic AND instead.
diff --git a/src/ev_epoll.c b/src/ev_epoll.c
index 3edaf28..b98ca8c 100644
--- a/src/ev_epoll.c
+++ b/src/ev_epoll.c
@@ -79,10 +79,8 @@
 			continue;
 		}
 
-		HA_SPIN_LOCK(FD_LOCK, &fdtab[fd].lock);
-		fdtab[fd].update_mask &= ~tid_bit;
 		en = fdtab[fd].state;
-		HA_SPIN_UNLOCK(FD_LOCK, &fdtab[fd].lock);
+		HA_ATOMIC_AND(&fdtab[fd].update_mask, ~tid_bit);
 
 		if (fdtab[fd].polled_mask & tid_bit) {
 			if (!(fdtab[fd].thread_mask & tid_bit) || !(en & FD_EV_POLLED_RW)) {
diff --git a/src/ev_kqueue.c b/src/ev_kqueue.c
index fcd04fd..cc96307 100644
--- a/src/ev_kqueue.c
+++ b/src/ev_kqueue.c
@@ -52,10 +52,8 @@
 			continue;
 		}
 
-		HA_SPIN_LOCK(FD_LOCK, &fdtab[fd].lock);
-		fdtab[fd].update_mask &= ~tid_bit;
 		en = fdtab[fd].state;
-		HA_SPIN_UNLOCK(FD_LOCK, &fdtab[fd].lock);
+		HA_ATOMIC_AND(&fdtab[fd].update_mask, ~tid_bit);
 
 		if (!(fdtab[fd].thread_mask & tid_bit) || !(en & FD_EV_POLLED_RW)) {
 			if (!(fdtab[fd].polled_mask & tid_bit)) {
diff --git a/src/ev_poll.c b/src/ev_poll.c
index 22cb227..edcfe65 100644
--- a/src/ev_poll.c
+++ b/src/ev_poll.c
@@ -70,10 +70,8 @@
 			continue;
 		}
 
-		HA_SPIN_LOCK(FD_LOCK, &fdtab[fd].lock);
-		fdtab[fd].update_mask &= ~tid_bit;
 		en = fdtab[fd].state;
-		HA_SPIN_UNLOCK(FD_LOCK, &fdtab[fd].lock);
+		HA_ATOMIC_AND(&fdtab[fd].update_mask, ~tid_bit);
 
 		/* we have a single state for all threads, which is why we
 		 * don't check the tid_bit. First thread to see the update
diff --git a/src/ev_select.c b/src/ev_select.c
index db0814d..6e83467 100644
--- a/src/ev_select.c
+++ b/src/ev_select.c
@@ -62,10 +62,8 @@
 			continue;
 		}
 
-		HA_SPIN_LOCK(FD_LOCK, &fdtab[fd].lock);
-		fdtab[fd].update_mask &= ~tid_bit;
 		en = fdtab[fd].state;
-		HA_SPIN_UNLOCK(FD_LOCK, &fdtab[fd].lock);
+		HA_ATOMIC_AND(&fdtab[fd].update_mask, ~tid_bit);
 
 		/* we have a single state for all threads, which is why we
 		 * don't check the tid_bit. First thread to see the update