Maybe this is too invasive or radical a change, but it strikes me as kind of weird that mapping_get_fd() [and mapping_fd_ops] exists, if the only purpose (at least, what seems to be the only purpose) is to pass the unix fd to virtual_map_section(). Maybe instead it would make more sense to pass that as part of the get_mapping_info request, and get rid of mapping fd objects altogether?