1. 12 Dec, 2018 6 commits
    • Lioncash's avatar
      svc: Handle memory writing explicitly within QueryProcessMemory · d8deb39b
      Lioncash authored
      Moves the memory writes directly into QueryProcessMemory instead of
      letting the wrapper function do it. It would be inaccurate to allow the
      handler to do it because there's cases where memory shouldn't even be
      written to. For example, if the given process handle is invalid.
      
      HOWEVER, if the memory writing is within the wrapper, then we have no
      control over if these memory writes occur, meaning in an error case, 68
      bytes of memory randomly get trashed with zeroes, 64 of those being
      written to wherever the memory info address points to, and the remaining
      4 being written wherever the page info address points to.
      
      One solution in this case would be to just conditionally check within
      the handler itself, but this is kind of smelly, given the handler
      shouldn't be performing conditional behavior itself, it's a behavior of
      the managed function. In other words, if you remove the handler from the
      equation entirely, does the function still retain its proper behavior?
      In this case, no.
      
      Now, we don't potentially trash memory from this function if an invalid
      query is performed.
      d8deb39b
    • Lioncash's avatar
      vm_manager: Correct ordering of last two struct members of MemoryInfo · b1b855c5
      Lioncash authored
      These should be swapped.
      b1b855c5
    • Lioncash's avatar
      vm_manager: Amend the returned values for invalid memory queries in QueryMemory() · eb5f3f67
      Lioncash authored
      The kernel returns a memory info instance with the base address set to
      the end of the address space, and the size of said block as
      0 - address_space_end, it doesn't set both of said members to zero.
      eb5f3f67
    • Lioncash's avatar
      vm_manager: Migrate memory querying to the VMManager interface · a8cc0350
      Lioncash authored
      Gets rid of the need to directly access the managed VMAs outside of the
      memory manager itself just for querying memory.
      a8cc0350
    • Lioncash's avatar
      vm_manager: Migrate MemoryInfo and PageInfo to vm_manager.h · c02b8c89
      Lioncash authored
      Gets the two structures out of an unrelated header and places them with
      the rest of the memory management code.
      
      This also corrects the structures. PageInfo appears to only contain a
      32-bit flags member, and the extra padding word in MemoryInfo isn't
      necessary.
      c02b8c89
    • Lioncash's avatar
      vm_manager: Amend MemoryState enum members · 366985ca
      Lioncash authored
      Amends the MemoryState enum to use the same values like the actual
      kernel does. Also provides the necessary operators to operate on them.
      This will be necessary in the future for implementing
      svcSetMemoryAttribute, as memory block state is checked before applying
      the attribute.
      366985ca
  2. 11 Dec, 2018 5 commits
  3. 10 Dec, 2018 6 commits
  4. 09 Dec, 2018 1 commit
  5. 08 Dec, 2018 2 commits
  6. 07 Dec, 2018 8 commits
  7. 06 Dec, 2018 12 commits