Funkcja do_munmmap dostaje adres początkowy i zakres
zwalnianego obszaru. Uwaga! podany zakres nie musi odpowiadać zakresowi
opisywanemu przez jakiś deskryptor VMA.
Funkcja najpierw sprawdza czy podany adres istnieje i czy
będzie mogła stworzyć nowy deskryptor VMA na wypadek gdyby zakres
był w środku obszaru opisywanego innym deskryptorem i trzeba było
go podzielić na dwa. Następnie zbiera w listę obszary przecinające się
z podanym zakresem. Potem dla każdego obszaru VMA z tej listy:
-- zwalnia strony przydzielone obszarowi;
-- zwalnia pamięć obszaru, są tu cztery przypadki:
- zwolniony zostanie cały obszar;
- zwolniony zostanie jego początek;
- zwolniony zostanie jego środek;
- zwolniony zostanie jego koniec.
Wszystkie te przypadki obsługiwane są funkcją unmap_fixup.