line->up_to_date = false;
 }
 
+static void line_update(struct gpiod_line *line)
+{
+       int status;
+
+       status = gpiod_line_update(line);
+       if (status < 0)
+               line_set_needs_update(line);
+}
+
 bool gpiod_line_needs_update(struct gpiod_line *line)
 {
        return !line->up_to_date;
 
                line_set_handle(line, handle);
                line_set_state(line, LINE_TAKEN);
-               /*
-                * Update line info to include the changes after the
-                * request.
-                */
-               status = gpiod_line_update(line);
-               if (status < 0)
-                       line_set_needs_update(line);
+               line_update(line);
        }
 
        return 0;
 {
        struct gpiod_line *line;
        unsigned int i;
-       int status;
 
        for (i = 0; i < line_bulk->num_lines; i++) {
                line = line_bulk->lines[i];
 
                line_remove_handle(line);
                line_set_state(line, LINE_FREE);
-
-               status = gpiod_line_update(line);
-               if (status < 0)
-                       line_set_needs_update(line);
+               line_update(line);
        }
 }