From: Simone Piccardi Date: Thu, 15 Oct 2020 08:48:23 +0000 (+0200) Subject: Merge branch 'master' of ssh://roach.truelite.it/srv/git/gapil X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=commitdiff_plain;h=29f18e0581de602762b8ba590132f85d7888bdc2;hp=-c Merge branch 'master' of ssh://roach.truelite.it/srv/git/gapil --- 29f18e0581de602762b8ba590132f85d7888bdc2 diff --combined fileio.tex index 8657720,3bd9db3..f630562 --- a/fileio.tex +++ b/fileio.tex @@@ -1847,9 -1847,6 +1847,9 @@@ riferimento ad una directory, tranne i \textit{pathname} assoluto, nel qual caso, come detto, il valore di \param{dirfd} sarà completamente ignorato. +% TODO: trattare openat2, introdotta con il kernel 5.6, vedi +% https://lwn.net/Articles/796868/ e https://git.kernel.org/linus/b55eef872a96 + \begin{table}[htb] \centering \footnotesize @@@ -1957,7 -1954,9 +1957,9 @@@ Si tenga presente che non tutte le funz aggiuntivo sono \textit{system call}, ad esempio \func{faccessat} e \func{fchmodat} sono realizzate con dei \textit{wrapper} nella \acr{glibc} per aderenza allo standard POSIX.1-2008, dato che la \textit{system call} - sottostante non prevede l'argomento \param{flags}. + sottostante non prevede l'argomento \param{flags}. + + % TODO: aggiornare per via di faccessat2 aggiunta con il kernel 5.8 In tab.~\ref{tab:at-functions_constant_values} si sono elencati i valori utilizzabili per i flag (tranne quelli specifici di \func{statx} su cui @@@ -1972,9 -1971,6 +1974,9 @@@ perché non avrebbe molto senso cambiar pertanto l'uso della funzione è analogo a quello delle altre funzioni che non hanno l'argomento \param{flags} (e non la tratteremo esplicitamente). +% TODO: documentare l'introduzione di fchmodat4() se e quando ci sarà, vedi +% https://lwn.net/Articles/792628/ + L'altro flag comune è \const{AT\_EMPTY\_PATH}, utilizzabile a partire dal kernel 2.6.39, che consente di usare per \param{dirfd} un file descriptor associato ad un file qualunque e non necessariamente ad una directory; in diff --combined procadv.tex index 006a844,fe057f8..ebef643 --- a/procadv.tex +++ b/procadv.tex @@@ -572,6 -572,9 +572,9 @@@ opportuno dettagliare maggiormente \label{tab:proc_capabilities} \end{table} + % TODO: verificare ed aggiungere le nuove capacità CAP_BPF, CAP_PERFMON, vedi + % https://lwn.net/Articles/822362/ + \constbeg{CAP\_SETPCAP} Prima di dettagliare il significato della capacità più generiche, conviene @@@ -1495,8 -1498,7 +1498,8 @@@ alcune opzioni di controllo attivabili % TODO documentare la syscall getrandom, introdotta con il kernel 3.17, vedi % http://lwn.net/Articles/606141/, ed introdotta con le glibc solo con la -% versione 2.25, vedi https://lwn.net/Articles/711013/ +% versione 2.25 con getentropy, vedi https://lwn.net/Articles/711013/ ed i +% problemi successivi vedi https://lwn.net/Articles/800509/ %\subsection{La gestione delle chiavi crittografiche} %\label{sec:keyctl_management} @@@ -1889,9 -1891,6 +1892,9 @@@ Introdotta a partire dal kernel 2.4.21 % TODO documentare PR_SPEC_DISABLE_NOEXEC in 5.1, vedi % https://lwn.net/Articles/782511/ +% TODO documentare PR_SET_IO_FLUSHER in 5.6, vedi +% https://lwn.net/Articles/811230/ + \label{sec:prctl_operation} \end{basedescript} @@@ -2224,9 -2223,7 +2227,9 @@@ degli altri gruppi, che costituisce po % TODO: trattare userfaultfd, introdotta con il 4.23, vedi -% http://man7.org/linux/man-pages/man2/userfaultfd.2.html +% http://man7.org/linux/man-pages/man2/userfaultfd.2.html, +% https://lwn.net/Articles/787308/, https://git.kernel.org/linus/57e5d4f278b9 + % TODO: trattare process_vm_readv/process_vm_writev introdotte con il kernel % 3.2, vedi http://man7.org/linux/man-pages/man2/process_vm_readv.2.html e i diff --combined signal.tex index 0cdf0ab,8159d3f..2ec1761 --- a/signal.tex +++ b/signal.tex @@@ -2049,13 -2049,6 +2049,6 @@@ sia \param{act} che \param{oldact} son utilizzata per verificare che il segnale indicato sia valido per la piattaforma che si sta usando (se non lo è darà errore). - Entrambi i puntatori fanno riferimento alla struttura \struct{sigaction}, - tramite la quale si specificano tutte le caratteristiche dell'azione associata - ad un segnale. Anch'essa è descritta dallo standard POSIX.1 ed in Linux è - definita secondo quanto riportato in fig.~\ref{fig:sig_sigaction}. Il campo - \var{sa\_restorer}, non previsto dallo standard, è obsoleto e non deve essere - più usato. - \begin{figure}[!htb] \footnotesize \centering \begin{minipage}[c]{0.8\textwidth} @@@ -2066,13 -2059,19 +2059,19 @@@ \label{fig:sig_sigaction} \end{figure} + Entrambi i puntatori fanno riferimento alla struttura \struct{sigaction}, + tramite la quale si specificano tutte le caratteristiche dell'azione associata + ad un segnale. Anch'essa è descritta dallo standard POSIX.1 ed in Linux è + definita secondo quanto riportato in fig.~\ref{fig:sig_sigaction}. Il campo + \var{sa\_restorer}, non previsto dallo standard, è obsoleto e non deve essere + più usato. + Il campo \var{sa\_mask} serve ad indicare l'insieme dei segnali che devono essere bloccati durante l'esecuzione del gestore, ad essi viene comunque sempre aggiunto il segnale che ne ha causato la chiamata, a meno che non si - sia specificato con \var{sa\_flag} un comportamento diverso. Quando il - gestore ritorna comunque la maschera dei segnali bloccati (vedi - sez.~\ref{sec:sig_sigmask}) viene ripristinata al valore precedente - l'invocazione. + sia specificato con \var{sa\_flag} un comportamento diverso. Quando il gestore + ritorna la maschera dei segnali bloccati (vedi sez.~\ref{sec:sig_sigmask}) + viene comunque ripristinata al valore precedente l'invocazione. L'uso di questo campo permette ad esempio di risolvere il problema residuo dell'implementazione di \code{sleep} mostrata in @@@ -2127,6 -2126,11 +2126,11 @@@ tab.~\ref{tab:sig_sa_flag} call} quando vengono interrotte dal suddetto segnale, riproduce cioè il comportamento standard di BSD.\\ + \constd{SA\_RESTORER} & Ad uso delle implementazioni delle liberie del C, + non deve essere usato nelle applicazioni, serve ad + indicare che il campo \var{sa\_restorer} contiene + l'indirizzo di un cosiddetto \textit{signal + trampoline}.\footnotemark \\ \constd{SA\_SIGINFO} & Deve essere specificato quando si vuole usare un gestore in forma estesa usando \var{sa\_sigaction} al posto di @@@ -2137,6 -2141,13 +2141,13 @@@ \label{tab:sig_sa_flag} \end{table} + \footnotetext{il \itindex{signal~trampoline} \textit{signal trampoline} è il + codice usato per tornare da un gestore di segnali, che originariamente + veniva inserito nello \textit{stack}, ma i kernel recenti come misura di + sicurezza impediscono l'esecuzione di codice dallo stack, per cui questo + codice viene spostato altrove (ad esempio nella libreria del C) ed il suo + indirizzo viene indicato al kernel nel campo \var{sa\_restorer}.} + Come si può notare in fig.~\ref{fig:sig_sigaction} \func{sigaction} permette di utilizzare due forme diverse di gestore,\footnote{la possibilità è prevista dallo standard POSIX.1b, ed è stata aggiunta nei kernel della serie 2.1.x @@@ -2182,15 -2193,6 +2193,6 @@@ viene sempre espresso come una costante valori possibili si trovano in \file{bits/siginfo.h}.} ed i valori possibili in questo caso sono riportati in tab.~\ref{tab:sig_si_code_generic}. - Nel caso di alcuni segnali però il valore di \var{si\_code} viene usato per - fornire una informazione specifica relativa alle motivazioni della ricezione - dello stesso; ad esempio i vari segnali di errore (\signal{SIGILL}, - \signal{SIGFPE}, \signal{SIGSEGV} e \signal{SIGBUS}) lo usano per fornire - maggiori dettagli riguardo l'errore, come il tipo di errore aritmetico, di - istruzione illecita o di violazione di memoria; mentre alcuni segnali di - controllo (\signal{SIGCHLD}, \signal{SIGTRAP} e \signal{SIGPOLL}) forniscono - altre informazioni specifiche. - \begin{table}[!htb] \footnotesize \centering @@@ -2223,6 -2225,15 +2225,15 @@@ \label{tab:sig_si_code_generic} \end{table} + Nel caso di alcuni segnali però il valore di \var{si\_code} viene usato per + fornire una informazione specifica relativa alle motivazioni della ricezione + dello stesso; ad esempio i vari segnali di errore (\signal{SIGILL}, + \signal{SIGFPE}, \signal{SIGSEGV} e \signal{SIGBUS}) lo usano per fornire + maggiori dettagli riguardo l'errore, come il tipo di errore aritmetico, di + istruzione illecita o di violazione di memoria; mentre alcuni segnali di + controllo (\signal{SIGCHLD}, \signal{SIGTRAP} e \signal{SIGPOLL}) forniscono + altre informazioni specifiche. + In questo caso il valore del campo \var{si\_code} deve essere verificato nei confronti delle diverse costanti previste per ciascuno di detti segnali; dato @@@ -3835,10 -3846,10 +3846,10 @@@ tipo \type{sigjmp\_buf}, è assolutamen \label{sec:sig_pid_fd} -% TODO: trattare (qui?) pidfd_send_signal() introdotta con il kernel 5.1 vedi +% TODO: trattare (qui? oppure sopra in "Ulteriori funzioni di gestione?) +% pidfd_send_signal() introdotta con il kernel 5.1 vedi % https://lwn.net/Articles/784831/, https://lwn.net/Articles/773459/ e -% https://lwn.net/Articles/801319/ -% oppure sopra in "Ulteriori funzioni di gestione" +% https://lwn.net/Articles/801319/ % TODO: Nuova subsection sui pidfd, e le funzioni correlate, in particolare: % trattare pidfd_send_signal, aggiunta con il kernel 5.1 (vedi @@@ -3848,7 -3859,7 +3859,7 @@@ % trattare pure pidfd_open() (vedi https://lwn.net/Articles/789023/) per % ottere un pid fd pollabile aggiunta con il kernel 5.3 % man pidfd_send_signal su le versioni più recenti della man pages - +% trattare pidfd_getfd aggiunta con il kernel 5.6