@@ -65,9 +65,21 @@ void RegisterPrivilegedProcessesWithFs() {
6565 const u32 PRIVILEGED_FAH[0x1C /sizeof (u32 )] = {0x00000001 , 0x00000000 , 0x80000000 , 0x0000001C , 0x00000000 , 0x0000001C , 0x00000000 };
6666 const u32 PRIVILEGED_FAC[0x2C /sizeof (u32 )] = {0x00000001 , 0x00000000 , 0x80000000 , 0x00000000 , 0x00000000 , 0xFFFFFFFF , 0xFFFFFFFF , 0x00000000 , 0x00000000 , 0xFFFFFFFF , 0xFFFFFFFF };
6767
68- for (u64 pid = PRIVILEGED_PROCESS_MIN; pid <= PRIVILEGED_PROCESS_MAX; pid++) {
69- fsprUnregisterProgram (pid);
70- fsprRegisterProgram (pid, pid, FsStorageId_NandSystem, PRIVILEGED_FAH, sizeof (PRIVILEGED_FAH), PRIVILEGED_FAC, sizeof (PRIVILEGED_FAC));
68+ u32 num_pids;
69+ u64 pids[PRIVILEGED_PROCESS_MAX+1 ];
70+ if (R_SUCCEEDED (svcGetProcessList (&num_pids, pids, sizeof (pids)/sizeof (pids[0 ])))) {
71+ for (u32 i = 0 ; i < num_pids; i++) {
72+ const u64 pid = pids[i];
73+ if (PRIVILEGED_PROCESS_MIN <= pid && pid <= PRIVILEGED_PROCESS_MAX) {
74+ fsprUnregisterProgram (pid);
75+ fsprRegisterProgram (pid, pid, FsStorageId_NandSystem, PRIVILEGED_FAH, sizeof (PRIVILEGED_FAH), PRIVILEGED_FAC, sizeof (PRIVILEGED_FAC));
76+ }
77+ }
78+ } else {
79+ for (u64 pid = PRIVILEGED_PROCESS_MIN; pid <= PRIVILEGED_PROCESS_MAX; pid++) {
80+ fsprUnregisterProgram (pid);
81+ fsprRegisterProgram (pid, pid, FsStorageId_NandSystem, PRIVILEGED_FAH, sizeof (PRIVILEGED_FAH), PRIVILEGED_FAC, sizeof (PRIVILEGED_FAC));
82+ }
7183 }
7284}
7385
0 commit comments