You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Flashing keyboard LEDs can be such a solution: It is an immediate way to attract attention or to display a status condition.
1503
1503
Keyboard LEDs are present on every hardware, they are always visible, they do not need any setup, and their use is rather simple and non-intrusive, compared to writing to a tty or a file.
1504
1504
1505
+
From v4.14 to v4.15, the timer API made a series of changes to improve memory safety.
1506
+
A buffer overflow in the area of a \cpp|timer_list| structure may be able to overwrite the \cpp|function| and \cpp|data| fields, providing the attacker with a way to use return-object programming (ROP) to call arbitrary functions within the kernel.
1507
+
Also, the function prototype of the callback, containing a \cpp|unsigned long| argument, will prevent work from any type checking.
1508
+
Furthermore, the function prototype with \cpp|unsigned long| argument may be an obstacle to the \textit{control-flow integrity}.
1509
+
Thus, it is better to use a unique prototype to separate from the cluster that takes an \cpp|unsigned long| argument.
1510
+
The timer callback should be passed a pointer to the \cpp|timer_list| structure rather than an \cpp|unsigned long| argument.
1511
+
Then, it wraps all the information the callback needs, including the \cpp|timer_list| structure, into a larger structure, and it can use the \cpp|container_of| macro instead of the \cpp|unsigned long| value.
1512
+
1513
+
Before Linux v4.14, \cpp|setup_timer| was used to initialize the timer and the \cpp|timer_list| structure looked like:
0 commit comments