diff --git a/src/core/hle/kernel/hle_ipc.cpp b/src/core/hle/kernel/hle_ipc.cpp
index 36cf750de..f6654f56c 100644
--- a/src/core/hle/kernel/hle_ipc.cpp
+++ b/src/core/hle/kernel/hle_ipc.cpp
@@ -345,7 +345,7 @@ std::vector<u8> HLERequestContext::ReadBufferCopy(std::size_t buffer_index) cons
     }
 }
 
-std::span<const u8> HLERequestContext::ReadBufferSpan(std::size_t buffer_index) const {
+std::span<const u8> HLERequestContext::ReadBuffer(std::size_t buffer_index) const {
     const bool is_buffer_a{BufferDescriptorA().size() > buffer_index &&
                            BufferDescriptorA()[buffer_index].Size()};
     if (is_buffer_a) {
diff --git a/src/core/hle/kernel/hle_ipc.h b/src/core/hle/kernel/hle_ipc.h
index 27f9628c7..5bf4f171b 100644
--- a/src/core/hle/kernel/hle_ipc.h
+++ b/src/core/hle/kernel/hle_ipc.h
@@ -271,12 +271,12 @@ public:
         return domain_message_header.has_value();
     }
 
+    /// Helper function to get a span of a buffer using the appropriate buffer descriptor
+    [[nodiscard]] std::span<const u8> ReadBuffer(std::size_t buffer_index = 0) const;
+
     /// Helper function to read a copy of a buffer using the appropriate buffer descriptor
     [[nodiscard]] std::vector<u8> ReadBufferCopy(std::size_t buffer_index = 0) const;
 
-    /// Helper function to get a span of a buffer using the appropriate buffer descriptor
-    [[nodiscard]] std::span<const u8> ReadBufferSpan(std::size_t buffer_index = 0) const;
-
     /// Helper function to write a buffer using the appropriate buffer descriptor
     std::size_t WriteBuffer(const void* buffer, std::size_t size,
                             std::size_t buffer_index = 0) const;
diff --git a/src/core/hle/service/acc/acc.cpp b/src/core/hle/service/acc/acc.cpp
index 398bbc793..6d1084fd1 100644
--- a/src/core/hle/service/acc/acc.cpp
+++ b/src/core/hle/service/acc/acc.cpp
@@ -367,7 +367,7 @@ protected:
         IPC::RequestParser rp{ctx};
         const auto base = rp.PopRaw<ProfileBase>();
 
-        const auto user_data = ctx.ReadBufferSpan();
+        const auto user_data = ctx.ReadBuffer();
 
         LOG_DEBUG(Service_ACC, "called, username='{}', timestamp={:016X}, uuid=0x{}",
                   Common::StringFromFixedZeroTerminatedBuffer(
@@ -399,8 +399,8 @@ protected:
         IPC::RequestParser rp{ctx};
         const auto base = rp.PopRaw<ProfileBase>();
 
-        const auto user_data = ctx.ReadBufferSpan();
-        const auto image_data = ctx.ReadBufferSpan(1);
+        const auto user_data = ctx.ReadBuffer();
+        const auto image_data = ctx.ReadBuffer(1);
 
         LOG_DEBUG(Service_ACC, "called, username='{}', timestamp={:016X}, uuid=0x{}",
                   Common::StringFromFixedZeroTerminatedBuffer(
diff --git a/src/core/hle/service/am/am.cpp b/src/core/hle/service/am/am.cpp
index 958e40648..ebcf6e164 100644
--- a/src/core/hle/service/am/am.cpp
+++ b/src/core/hle/service/am/am.cpp
@@ -1124,7 +1124,7 @@ void IStorageAccessor::Write(Kernel::HLERequestContext& ctx) {
     IPC::RequestParser rp{ctx};
 
     const u64 offset{rp.Pop<u64>()};
-    const auto data{ctx.ReadBufferSpan()};
+    const auto data{ctx.ReadBuffer()};
     const std::size_t size{std::min<u64>(data.size(), backing.GetSize() - offset)};
 
     LOG_DEBUG(Service_AM, "called, offset={}, size={}", offset, size);
diff --git a/src/core/hle/service/aoc/aoc_u.cpp b/src/core/hle/service/aoc/aoc_u.cpp
index cc976b155..368ccd52f 100644
--- a/src/core/hle/service/aoc/aoc_u.cpp
+++ b/src/core/hle/service/aoc/aoc_u.cpp
@@ -72,7 +72,7 @@ private:
         IPC::RequestParser rp{ctx};
 
         const auto unknown_1 = rp.Pop<u64>();
-        [[maybe_unused]] const auto unknown_2 = ctx.ReadBufferSpan();
+        [[maybe_unused]] const auto unknown_2 = ctx.ReadBuffer();
 
         LOG_WARNING(Service_AOC, "(STUBBED) called, unknown_1={}", unknown_1);
 
@@ -84,7 +84,7 @@ private:
         IPC::RequestParser rp{ctx};
 
         const auto unknown_1 = rp.Pop<u64>();
-        [[maybe_unused]] const auto unknown_2 = ctx.ReadBufferSpan();
+        [[maybe_unused]] const auto unknown_2 = ctx.ReadBuffer();
 
         LOG_WARNING(Service_AOC, "(STUBBED) called, unknown_1={}", unknown_1);
 
diff --git a/src/core/hle/service/audio/audin_u.cpp b/src/core/hle/service/audio/audin_u.cpp
index f3dd8397d..053e8f9dd 100644
--- a/src/core/hle/service/audio/audin_u.cpp
+++ b/src/core/hle/service/audio/audin_u.cpp
@@ -98,7 +98,7 @@ private:
             LOG_ERROR(Service_Audio, "Input buffer is too small for an AudioInBuffer!");
         }
 
-        const auto& in_buffer = ctx.ReadBufferSpan();
+        const auto& in_buffer = ctx.ReadBuffer();
         AudioInBuffer buffer{};
         std::memcpy(&buffer, in_buffer.data(), sizeof(AudioInBuffer));
 
@@ -266,7 +266,7 @@ void AudInU::OpenAudioIn(Kernel::HLERequestContext& ctx) {
     IPC::RequestParser rp{ctx};
     auto in_params{rp.PopRaw<AudioInParameter>()};
     auto applet_resource_user_id{rp.PopRaw<u64>()};
-    const auto device_name_data{ctx.ReadBufferSpan()};
+    const auto device_name_data{ctx.ReadBuffer()};
     auto device_name = Common::StringFromBuffer(device_name_data);
     auto handle{ctx.GetCopyHandle(0)};
 
@@ -317,7 +317,7 @@ void AudInU::OpenAudioInProtocolSpecified(Kernel::HLERequestContext& ctx) {
     auto protocol_specified{rp.PopRaw<u64>()};
     auto in_params{rp.PopRaw<AudioInParameter>()};
     auto applet_resource_user_id{rp.PopRaw<u64>()};
-    const auto device_name_data{ctx.ReadBufferSpan()};
+    const auto device_name_data{ctx.ReadBuffer()};
     auto device_name = Common::StringFromBuffer(device_name_data);
     auto handle{ctx.GetCopyHandle(0)};
 
diff --git a/src/core/hle/service/audio/audout_u.cpp b/src/core/hle/service/audio/audout_u.cpp
index 4bf388055..29751f075 100644
--- a/src/core/hle/service/audio/audout_u.cpp
+++ b/src/core/hle/service/audio/audout_u.cpp
@@ -105,7 +105,7 @@ private:
             LOG_ERROR(Service_Audio, "Input buffer is too small for an AudioOutBuffer!");
         }
 
-        const auto& in_buffer = ctx.ReadBufferSpan();
+        const auto& in_buffer = ctx.ReadBuffer();
         AudioOutBuffer buffer{};
         std::memcpy(&buffer, in_buffer.data(), sizeof(AudioOutBuffer));
 
@@ -264,7 +264,7 @@ void AudOutU::OpenAudioOut(Kernel::HLERequestContext& ctx) {
     IPC::RequestParser rp{ctx};
     auto in_params{rp.PopRaw<AudioOutParameter>()};
     auto applet_resource_user_id{rp.PopRaw<u64>()};
-    const auto device_name_data{ctx.ReadBufferSpan()};
+    const auto device_name_data{ctx.ReadBuffer()};
     auto device_name = Common::StringFromBuffer(device_name_data);
     auto handle{ctx.GetCopyHandle(0)};
 
diff --git a/src/core/hle/service/audio/audren_u.cpp b/src/core/hle/service/audio/audren_u.cpp
index 1a48c155e..0ee28752c 100644
--- a/src/core/hle/service/audio/audren_u.cpp
+++ b/src/core/hle/service/audio/audren_u.cpp
@@ -112,7 +112,7 @@ private:
     void RequestUpdate(Kernel::HLERequestContext& ctx) {
         LOG_TRACE(Service_Audio, "called");
 
-        const auto input{ctx.ReadBufferSpan(0)};
+        const auto input{ctx.ReadBuffer(0)};
 
         // These buffers are written manually to avoid an issue with WriteBuffer throwing errors for
         // checking size 0. Performance size is 0 for most games.
@@ -306,7 +306,7 @@ private:
         IPC::RequestParser rp{ctx};
         const f32 volume = rp.Pop<f32>();
 
-        const auto device_name_buffer = ctx.ReadBufferSpan();
+        const auto device_name_buffer = ctx.ReadBuffer();
         const std::string name = Common::StringFromBuffer(device_name_buffer);
 
         LOG_DEBUG(Service_Audio, "called. name={}, volume={}", name, volume);
@@ -320,7 +320,7 @@ private:
     }
 
     void GetAudioDeviceOutputVolume(Kernel::HLERequestContext& ctx) {
-        const auto device_name_buffer = ctx.ReadBufferSpan();
+        const auto device_name_buffer = ctx.ReadBuffer();
         const std::string name = Common::StringFromBuffer(device_name_buffer);
 
         LOG_DEBUG(Service_Audio, "called. Name={}", name);
diff --git a/src/core/hle/service/audio/hwopus.cpp b/src/core/hle/service/audio/hwopus.cpp
index 7c3f25c67..e01f87356 100644
--- a/src/core/hle/service/audio/hwopus.cpp
+++ b/src/core/hle/service/audio/hwopus.cpp
@@ -74,7 +74,7 @@ private:
             ResetDecoderContext();
         }
 
-        if (!DecodeOpusData(consumed, sample_count, ctx.ReadBufferSpan(), samples, performance)) {
+        if (!DecodeOpusData(consumed, sample_count, ctx.ReadBuffer(), samples, performance)) {
             LOG_ERROR(Audio, "Failed to decode opus data");
             IPC::ResponseBuilder rb{ctx, 2};
             // TODO(ogniK): Use correct error code
@@ -257,7 +257,7 @@ void HwOpus::GetWorkBufferSizeEx(Kernel::HLERequestContext& ctx) {
 
 void HwOpus::GetWorkBufferSizeForMultiStreamEx(Kernel::HLERequestContext& ctx) {
     OpusMultiStreamParametersEx param;
-    std::memcpy(&param, ctx.ReadBufferSpan().data(), ctx.GetReadBufferSize());
+    std::memcpy(&param, ctx.ReadBuffer().data(), ctx.GetReadBufferSize());
 
     const auto sample_rate = param.sample_rate;
     const auto channel_count = param.channel_count;
diff --git a/src/core/hle/service/bcat/bcat_module.cpp b/src/core/hle/service/bcat/bcat_module.cpp
index c1a012739..cbe690a5d 100644
--- a/src/core/hle/service/bcat/bcat_module.cpp
+++ b/src/core/hle/service/bcat/bcat_module.cpp
@@ -206,7 +206,7 @@ private:
         IPC::RequestParser rp{ctx};
         const auto title_id = rp.PopRaw<u64>();
 
-        const auto passphrase_raw = ctx.ReadBufferSpan();
+        const auto passphrase_raw = ctx.ReadBuffer();
 
         LOG_DEBUG(Service_BCAT, "called, title_id={:016X}, passphrase={}", title_id,
                   Common::HexToString(passphrase_raw));
diff --git a/src/core/hle/service/es/es.cpp b/src/core/hle/service/es/es.cpp
index 5ea61c430..fb8686859 100644
--- a/src/core/hle/service/es/es.cpp
+++ b/src/core/hle/service/es/es.cpp
@@ -121,8 +121,8 @@ private:
     }
 
     void ImportTicket(Kernel::HLERequestContext& ctx) {
-        const auto ticket = ctx.ReadBufferSpan();
-        [[maybe_unused]] const auto cert = ctx.ReadBufferSpan(1);
+        const auto ticket = ctx.ReadBuffer();
+        [[maybe_unused]] const auto cert = ctx.ReadBuffer(1);
 
         if (ticket.size() < sizeof(Core::Crypto::Ticket)) {
             LOG_ERROR(Service_ETicket, "The input buffer is not large enough!");
diff --git a/src/core/hle/service/fatal/fatal.cpp b/src/core/hle/service/fatal/fatal.cpp
index ff896ea10..27675615b 100644
--- a/src/core/hle/service/fatal/fatal.cpp
+++ b/src/core/hle/service/fatal/fatal.cpp
@@ -152,7 +152,7 @@ void Module::Interface::ThrowFatalWithCpuContext(Kernel::HLERequestContext& ctx)
     IPC::RequestParser rp(ctx);
     const auto error_code = rp.Pop<Result>();
     const auto fatal_type = rp.PopEnum<FatalType>();
-    const auto fatal_info = ctx.ReadBufferSpan();
+    const auto fatal_info = ctx.ReadBuffer();
     FatalInfo info{};
 
     ASSERT_MSG(fatal_info.size() == sizeof(FatalInfo), "Invalid fatal info buffer size!");
diff --git a/src/core/hle/service/filesystem/fsp_srv.cpp b/src/core/hle/service/filesystem/fsp_srv.cpp
index efebb0ccc..cab44bf9c 100644
--- a/src/core/hle/service/filesystem/fsp_srv.cpp
+++ b/src/core/hle/service/filesystem/fsp_srv.cpp
@@ -190,7 +190,7 @@ private:
             return;
         }
 
-        const auto data = ctx.ReadBufferSpan();
+        const auto data = ctx.ReadBuffer();
 
         ASSERT_MSG(
             static_cast<s64>(data.size()) <= length,
@@ -337,7 +337,7 @@ public:
     void CreateFile(Kernel::HLERequestContext& ctx) {
         IPC::RequestParser rp{ctx};
 
-        const auto file_buffer = ctx.ReadBufferSpan();
+        const auto file_buffer = ctx.ReadBuffer();
         const std::string name = Common::StringFromBuffer(file_buffer);
 
         const u64 file_mode = rp.Pop<u64>();
@@ -351,7 +351,7 @@ public:
     }
 
     void DeleteFile(Kernel::HLERequestContext& ctx) {
-        const auto file_buffer = ctx.ReadBufferSpan();
+        const auto file_buffer = ctx.ReadBuffer();
         const std::string name = Common::StringFromBuffer(file_buffer);
 
         LOG_DEBUG(Service_FS, "called. file={}", name);
@@ -361,7 +361,7 @@ public:
     }
 
     void CreateDirectory(Kernel::HLERequestContext& ctx) {
-        const auto file_buffer = ctx.ReadBufferSpan();
+        const auto file_buffer = ctx.ReadBuffer();
         const std::string name = Common::StringFromBuffer(file_buffer);
 
         LOG_DEBUG(Service_FS, "called. directory={}", name);
@@ -371,7 +371,7 @@ public:
     }
 
     void DeleteDirectory(Kernel::HLERequestContext& ctx) {
-        const auto file_buffer = ctx.ReadBufferSpan();
+        const auto file_buffer = ctx.ReadBuffer();
         const std::string name = Common::StringFromBuffer(file_buffer);
 
         LOG_DEBUG(Service_FS, "called. directory={}", name);
@@ -381,7 +381,7 @@ public:
     }
 
     void DeleteDirectoryRecursively(Kernel::HLERequestContext& ctx) {
-        const auto file_buffer = ctx.ReadBufferSpan();
+        const auto file_buffer = ctx.ReadBuffer();
         const std::string name = Common::StringFromBuffer(file_buffer);
 
         LOG_DEBUG(Service_FS, "called. directory={}", name);
@@ -391,7 +391,7 @@ public:
     }
 
     void CleanDirectoryRecursively(Kernel::HLERequestContext& ctx) {
-        const auto file_buffer = ctx.ReadBufferSpan();
+        const auto file_buffer = ctx.ReadBuffer();
         const std::string name = Common::StringFromBuffer(file_buffer);
 
         LOG_DEBUG(Service_FS, "called. Directory: {}", name);
@@ -401,8 +401,8 @@ public:
     }
 
     void RenameFile(Kernel::HLERequestContext& ctx) {
-        const std::string src_name = Common::StringFromBuffer(ctx.ReadBufferSpan(0));
-        const std::string dst_name = Common::StringFromBuffer(ctx.ReadBufferSpan(1));
+        const std::string src_name = Common::StringFromBuffer(ctx.ReadBuffer(0));
+        const std::string dst_name = Common::StringFromBuffer(ctx.ReadBuffer(1));
 
         LOG_DEBUG(Service_FS, "called. file '{}' to file '{}'", src_name, dst_name);
 
@@ -413,7 +413,7 @@ public:
     void OpenFile(Kernel::HLERequestContext& ctx) {
         IPC::RequestParser rp{ctx};
 
-        const auto file_buffer = ctx.ReadBufferSpan();
+        const auto file_buffer = ctx.ReadBuffer();
         const std::string name = Common::StringFromBuffer(file_buffer);
 
         const auto mode = static_cast<FileSys::Mode>(rp.Pop<u32>());
@@ -437,7 +437,7 @@ public:
     void OpenDirectory(Kernel::HLERequestContext& ctx) {
         IPC::RequestParser rp{ctx};
 
-        const auto file_buffer = ctx.ReadBufferSpan();
+        const auto file_buffer = ctx.ReadBuffer();
         const std::string name = Common::StringFromBuffer(file_buffer);
 
         // TODO(Subv): Implement this filter.
@@ -460,7 +460,7 @@ public:
     }
 
     void GetEntryType(Kernel::HLERequestContext& ctx) {
-        const auto file_buffer = ctx.ReadBufferSpan();
+        const auto file_buffer = ctx.ReadBuffer();
         const std::string name = Common::StringFromBuffer(file_buffer);
 
         LOG_DEBUG(Service_FS, "called. file={}", name);
@@ -501,7 +501,7 @@ public:
     }
 
     void GetFileTimeStampRaw(Kernel::HLERequestContext& ctx) {
-        const auto file_buffer = ctx.ReadBufferSpan();
+        const auto file_buffer = ctx.ReadBuffer();
         const std::string name = Common::StringFromBuffer(file_buffer);
 
         LOG_WARNING(Service_FS, "(Partial Implementation) called. file={}", name);
@@ -1083,7 +1083,7 @@ void FSP_SRV::GetGlobalAccessLogMode(Kernel::HLERequestContext& ctx) {
 }
 
 void FSP_SRV::OutputAccessLogToSdCard(Kernel::HLERequestContext& ctx) {
-    const auto raw = ctx.ReadBufferSpan();
+    const auto raw = ctx.ReadBuffer();
     auto log = Common::StringFromFixedZeroTerminatedBuffer(
         reinterpret_cast<const char*>(raw.data()), raw.size());
 
diff --git a/src/core/hle/service/glue/notif.cpp b/src/core/hle/service/glue/notif.cpp
index ee5c6d3a4..3ace2dabd 100644
--- a/src/core/hle/service/glue/notif.cpp
+++ b/src/core/hle/service/glue/notif.cpp
@@ -38,7 +38,7 @@ void NOTIF_A::RegisterAlarmSetting(Kernel::HLERequestContext& ctx) {
                "application_parameter_size is bigger than 0x400 bytes");
 
     AlarmSetting new_alarm{};
-    memcpy(&new_alarm, ctx.ReadBufferSpan(0).data(), sizeof(AlarmSetting));
+    memcpy(&new_alarm, ctx.ReadBuffer(0).data(), sizeof(AlarmSetting));
 
     // TODO: Count alarms per game id
     if (alarms.size() >= max_alarms) {
@@ -73,7 +73,7 @@ void NOTIF_A::UpdateAlarmSetting(Kernel::HLERequestContext& ctx) {
                "application_parameter_size is bigger than 0x400 bytes");
 
     AlarmSetting alarm_setting{};
-    memcpy(&alarm_setting, ctx.ReadBufferSpan(0).data(), sizeof(AlarmSetting));
+    memcpy(&alarm_setting, ctx.ReadBuffer(0).data(), sizeof(AlarmSetting));
 
     const auto alarm_it = GetAlarmFromId(alarm_setting.alarm_setting_id);
     if (alarm_it != alarms.end()) {
diff --git a/src/core/hle/service/hid/hid.cpp b/src/core/hle/service/hid/hid.cpp
index 294fe927b..f15f1a6bb 100644
--- a/src/core/hle/service/hid/hid.cpp
+++ b/src/core/hle/service/hid/hid.cpp
@@ -1026,7 +1026,7 @@ void Hid::SetSupportedNpadIdType(Kernel::HLERequestContext& ctx) {
     const auto applet_resource_user_id{rp.Pop<u64>()};
 
     applet_resource->GetController<Controller_NPad>(HidController::NPad)
-        .SetSupportedNpadIdTypes(ctx.ReadBufferSpan());
+        .SetSupportedNpadIdTypes(ctx.ReadBuffer());
 
     LOG_DEBUG(Service_HID, "called, applet_resource_user_id={}", applet_resource_user_id);
 
@@ -1564,8 +1564,8 @@ void Hid::SendVibrationValues(Kernel::HLERequestContext& ctx) {
     IPC::RequestParser rp{ctx};
     const auto applet_resource_user_id{rp.Pop<u64>()};
 
-    const auto handles = ctx.ReadBufferSpan(0);
-    const auto vibrations = ctx.ReadBufferSpan(1);
+    const auto handles = ctx.ReadBuffer(0);
+    const auto vibrations = ctx.ReadBuffer(1);
 
     std::vector<Core::HID::VibrationDeviceHandle> vibration_device_handles(
         handles.size() / sizeof(Core::HID::VibrationDeviceHandle));
@@ -2104,7 +2104,7 @@ void Hid::WritePalmaRgbLedPatternEntry(Kernel::HLERequestContext& ctx) {
     const auto connection_handle{rp.PopRaw<Controller_Palma::PalmaConnectionHandle>()};
     const auto unknown{rp.Pop<u64>()};
 
-    [[maybe_unused]] const auto buffer = ctx.ReadBufferSpan();
+    [[maybe_unused]] const auto buffer = ctx.ReadBuffer();
 
     LOG_WARNING(Service_HID, "(STUBBED) called, connection_handle={}, unknown={}",
                 connection_handle.npad_id, unknown);
diff --git a/src/core/hle/service/hid/hidbus.cpp b/src/core/hle/service/hid/hidbus.cpp
index abc15c34e..e5e50845f 100644
--- a/src/core/hle/service/hid/hidbus.cpp
+++ b/src/core/hle/service/hid/hidbus.cpp
@@ -351,7 +351,7 @@ void HidBus::GetExternalDeviceId(Kernel::HLERequestContext& ctx) {
 
 void HidBus::SendCommandAsync(Kernel::HLERequestContext& ctx) {
     IPC::RequestParser rp{ctx};
-    const auto data = ctx.ReadBufferSpan();
+    const auto data = ctx.ReadBuffer();
     const auto bus_handle_{rp.PopRaw<BusHandle>()};
 
     LOG_DEBUG(Service_HID,
diff --git a/src/core/hle/service/jit/jit.cpp b/src/core/hle/service/jit/jit.cpp
index 534639ff9..1295a44c7 100644
--- a/src/core/hle/service/jit/jit.cpp
+++ b/src/core/hle/service/jit/jit.cpp
@@ -62,7 +62,7 @@ public:
         const auto parameters{rp.PopRaw<InputParameters>()};
 
         // Optional input/output buffers
-        const auto input_buffer{ctx.CanReadBuffer() ? ctx.ReadBufferSpan() : std::span<const u8>()};
+        const auto input_buffer{ctx.CanReadBuffer() ? ctx.ReadBuffer() : std::span<const u8>()};
         std::vector<u8> output_buffer(ctx.CanWriteBuffer() ? ctx.GetWriteBufferSize() : 0);
 
         // Function call prototype:
@@ -132,7 +132,7 @@ public:
         const auto command{rp.PopRaw<u64>()};
 
         // Optional input/output buffers
-        const auto input_buffer{ctx.CanReadBuffer() ? ctx.ReadBufferSpan() : std::span<const u8>()};
+        const auto input_buffer{ctx.CanReadBuffer() ? ctx.ReadBuffer() : std::span<const u8>()};
         std::vector<u8> output_buffer(ctx.CanWriteBuffer() ? ctx.GetWriteBufferSize() : 0);
 
         // Function call prototype:
@@ -176,7 +176,7 @@ public:
         IPC::RequestParser rp{ctx};
         const auto tmem_size{rp.PopRaw<u64>()};
         const auto tmem_handle{ctx.GetCopyHandle(0)};
-        const auto nro_plugin{ctx.ReadBufferSpan(1)};
+        const auto nro_plugin{ctx.ReadBuffer(1)};
 
         if (tmem_size == 0) {
             LOG_ERROR(Service_JIT, "attempted to load plugin with empty transfer memory");
diff --git a/src/core/hle/service/ldn/ldn.cpp b/src/core/hle/service/ldn/ldn.cpp
index ad097a6ef..e5099d61f 100644
--- a/src/core/hle/service/ldn/ldn.cpp
+++ b/src/core/hle/service/ldn/ldn.cpp
@@ -412,7 +412,7 @@ public:
     }
 
     void SetAdvertiseData(Kernel::HLERequestContext& ctx) {
-        const auto read_buffer = ctx.ReadBufferSpan();
+        const auto read_buffer = ctx.ReadBuffer();
 
         IPC::ResponseBuilder rb{ctx, 2};
         rb.Push(lan_discovery.SetAdvertiseData(read_buffer));
@@ -464,7 +464,7 @@ public:
                  parameters.security_config.passphrase_size,
                  parameters.security_config.security_mode, parameters.local_communication_version);
 
-        const auto read_buffer = ctx.ReadBufferSpan();
+        const auto read_buffer = ctx.ReadBuffer();
         if (read_buffer.size() != sizeof(NetworkInfo)) {
             LOG_ERROR(Frontend, "NetworkInfo doesn't match read_buffer size!");
             IPC::ResponseBuilder rb{ctx, 2};
diff --git a/src/core/hle/service/lm/lm.cpp b/src/core/hle/service/lm/lm.cpp
index 0da461e6c..ef4b54046 100644
--- a/src/core/hle/service/lm/lm.cpp
+++ b/src/core/hle/service/lm/lm.cpp
@@ -94,7 +94,7 @@ public:
 private:
     void Log(Kernel::HLERequestContext& ctx) {
         std::size_t offset{};
-        const auto data = ctx.ReadBufferSpan();
+        const auto data = ctx.ReadBuffer();
 
         // This function only succeeds - Get that out of the way
         IPC::ResponseBuilder rb{ctx, 2};
diff --git a/src/core/hle/service/nfc/mifare_user.cpp b/src/core/hle/service/nfc/mifare_user.cpp
index 7d391c936..51523a3ae 100644
--- a/src/core/hle/service/nfc/mifare_user.cpp
+++ b/src/core/hle/service/nfc/mifare_user.cpp
@@ -168,7 +168,7 @@ void MFIUser::StopDetection(Kernel::HLERequestContext& ctx) {
 void MFIUser::Read(Kernel::HLERequestContext& ctx) {
     IPC::RequestParser rp{ctx};
     const auto device_handle{rp.Pop<u64>()};
-    const auto buffer{ctx.ReadBufferSpan()};
+    const auto buffer{ctx.ReadBuffer()};
     const auto number_of_commands{ctx.GetReadBufferNumElements<NFP::MifareReadBlockParameter>()};
     std::vector<NFP::MifareReadBlockParameter> read_commands(number_of_commands);
 
@@ -209,7 +209,7 @@ void MFIUser::Read(Kernel::HLERequestContext& ctx) {
 void MFIUser::Write(Kernel::HLERequestContext& ctx) {
     IPC::RequestParser rp{ctx};
     const auto device_handle{rp.Pop<u64>()};
-    const auto buffer{ctx.ReadBufferSpan()};
+    const auto buffer{ctx.ReadBuffer()};
     const auto number_of_commands{ctx.GetReadBufferNumElements<NFP::MifareWriteBlockParameter>()};
     std::vector<NFP::MifareWriteBlockParameter> write_commands(number_of_commands);
 
diff --git a/src/core/hle/service/nfc/nfc_user.cpp b/src/core/hle/service/nfc/nfc_user.cpp
index 5dcf8a423..89aa6b3f5 100644
--- a/src/core/hle/service/nfc/nfc_user.cpp
+++ b/src/core/hle/service/nfc/nfc_user.cpp
@@ -325,7 +325,7 @@ void IUser::SendCommandByPassThrough(Kernel::HLERequestContext& ctx) {
     IPC::RequestParser rp{ctx};
     const auto device_handle{rp.Pop<u64>()};
     const auto timeout{rp.PopRaw<Time::Clock::TimeSpanType>()};
-    const auto command_data{ctx.ReadBufferSpan()};
+    const auto command_data{ctx.ReadBuffer()};
 
     LOG_INFO(Service_NFC, "(STUBBED) called, device_handle={}, timeout={}, data_size={}",
              device_handle, timeout.ToSeconds(), command_data.size());
diff --git a/src/core/hle/service/nfp/nfp_user.cpp b/src/core/hle/service/nfp/nfp_user.cpp
index 0a5606756..a4d3d1bc7 100644
--- a/src/core/hle/service/nfp/nfp_user.cpp
+++ b/src/core/hle/service/nfp/nfp_user.cpp
@@ -290,7 +290,7 @@ void IUser::GetApplicationArea(Kernel::HLERequestContext& ctx) {
 void IUser::SetApplicationArea(Kernel::HLERequestContext& ctx) {
     IPC::RequestParser rp{ctx};
     const auto device_handle{rp.Pop<u64>()};
-    const auto data{ctx.ReadBufferSpan()};
+    const auto data{ctx.ReadBuffer()};
     LOG_INFO(Service_NFP, "called, device_handle={}, data_size={}", device_handle, data.size());
 
     if (state == State::NonInitialized) {
@@ -370,7 +370,7 @@ void IUser::CreateApplicationArea(Kernel::HLERequestContext& ctx) {
     IPC::RequestParser rp{ctx};
     const auto device_handle{rp.Pop<u64>()};
     const auto access_id{rp.Pop<u32>()};
-    const auto data{ctx.ReadBufferSpan()};
+    const auto data{ctx.ReadBuffer()};
     LOG_INFO(Service_NFP, "called, device_handle={}, data_size={}, access_id={}", device_handle,
              access_id, data.size());
 
@@ -637,7 +637,7 @@ void IUser::RecreateApplicationArea(Kernel::HLERequestContext& ctx) {
     IPC::RequestParser rp{ctx};
     const auto device_handle{rp.Pop<u64>()};
     const auto access_id{rp.Pop<u32>()};
-    const auto data{ctx.ReadBufferSpan()};
+    const auto data{ctx.ReadBuffer()};
     LOG_INFO(Service_NFP, "called, device_handle={}, data_size={}, access_id={}", device_handle,
              access_id, data.size());
 
diff --git a/src/core/hle/service/ngct/ngct.cpp b/src/core/hle/service/ngct/ngct.cpp
index bee62b054..8af8a835d 100644
--- a/src/core/hle/service/ngct/ngct.cpp
+++ b/src/core/hle/service/ngct/ngct.cpp
@@ -24,7 +24,7 @@ public:
 
 private:
     void Match(Kernel::HLERequestContext& ctx) {
-        const auto buffer = ctx.ReadBufferSpan();
+        const auto buffer = ctx.ReadBuffer();
         const auto text = Common::StringFromFixedZeroTerminatedBuffer(
             reinterpret_cast<const char*>(buffer.data()), buffer.size());
 
@@ -37,7 +37,7 @@ private:
     }
 
     void Filter(Kernel::HLERequestContext& ctx) {
-        const auto buffer = ctx.ReadBufferSpan();
+        const auto buffer = ctx.ReadBuffer();
         const auto text = Common::StringFromFixedZeroTerminatedBuffer(
             reinterpret_cast<const char*>(buffer.data()), buffer.size());
 
diff --git a/src/core/hle/service/nifm/nifm.cpp b/src/core/hle/service/nifm/nifm.cpp
index a6446fdcc..4fa9f51a6 100644
--- a/src/core/hle/service/nifm/nifm.cpp
+++ b/src/core/hle/service/nifm/nifm.cpp
@@ -414,7 +414,7 @@ void IGeneralService::CreateTemporaryNetworkProfile(Kernel::HLERequestContext& c
 
     ASSERT_MSG(ctx.GetReadBufferSize() == 0x17c, "SfNetworkProfileData is not the correct size");
     u128 uuid{};
-    auto buffer = ctx.ReadBufferSpan();
+    auto buffer = ctx.ReadBuffer();
     std::memcpy(&uuid, buffer.data() + 8, sizeof(u128));
 
     IPC::ResponseBuilder rb{ctx, 6, 0, 1};
diff --git a/src/core/hle/service/nvdrv/nvdrv_interface.cpp b/src/core/hle/service/nvdrv/nvdrv_interface.cpp
index 39a4443a0..edbdfee43 100644
--- a/src/core/hle/service/nvdrv/nvdrv_interface.cpp
+++ b/src/core/hle/service/nvdrv/nvdrv_interface.cpp
@@ -27,7 +27,7 @@ void NVDRV::Open(Kernel::HLERequestContext& ctx) {
         return;
     }
 
-    const auto& buffer = ctx.ReadBufferSpan();
+    const auto& buffer = ctx.ReadBuffer();
     const std::string device_name(buffer.begin(), buffer.end());
 
     if (device_name == "/dev/nvhost-prof-gpu") {
@@ -64,7 +64,7 @@ void NVDRV::Ioctl1(Kernel::HLERequestContext& ctx) {
 
     // Check device
     std::vector<u8> output_buffer(ctx.GetWriteBufferSize(0));
-    const auto input_buffer = ctx.ReadBufferSpan(0);
+    const auto input_buffer = ctx.ReadBuffer(0);
 
     const auto nv_result = nvdrv->Ioctl1(fd, command, input_buffer, output_buffer);
     if (command.is_out != 0) {
@@ -88,8 +88,8 @@ void NVDRV::Ioctl2(Kernel::HLERequestContext& ctx) {
         return;
     }
 
-    const auto input_buffer = ctx.ReadBufferSpan(0);
-    const auto input_inlined_buffer = ctx.ReadBufferSpan(1);
+    const auto input_buffer = ctx.ReadBuffer(0);
+    const auto input_inlined_buffer = ctx.ReadBuffer(1);
     std::vector<u8> output_buffer(ctx.GetWriteBufferSize(0));
 
     const auto nv_result =
@@ -115,7 +115,7 @@ void NVDRV::Ioctl3(Kernel::HLERequestContext& ctx) {
         return;
     }
 
-    const auto input_buffer = ctx.ReadBufferSpan(0);
+    const auto input_buffer = ctx.ReadBuffer(0);
     std::vector<u8> output_buffer(ctx.GetWriteBufferSize(0));
     std::vector<u8> output_buffer_inline(ctx.GetWriteBufferSize(1));
 
diff --git a/src/core/hle/service/nvflinger/buffer_queue_producer.cpp b/src/core/hle/service/nvflinger/buffer_queue_producer.cpp
index abed92d06..bcbe05b0d 100644
--- a/src/core/hle/service/nvflinger/buffer_queue_producer.cpp
+++ b/src/core/hle/service/nvflinger/buffer_queue_producer.cpp
@@ -815,7 +815,7 @@ Status BufferQueueProducer::SetPreallocatedBuffer(s32 slot,
 
 void BufferQueueProducer::Transact(Kernel::HLERequestContext& ctx, TransactionId code, u32 flags) {
     Status status{Status::NoError};
-    InputParcel parcel_in{ctx.ReadBufferSpan()};
+    InputParcel parcel_in{ctx.ReadBuffer()};
     OutputParcel parcel_out{};
 
     switch (code) {
diff --git a/src/core/hle/service/prepo/prepo.cpp b/src/core/hle/service/prepo/prepo.cpp
index f6a141b2e..01040b32a 100644
--- a/src/core/hle/service/prepo/prepo.cpp
+++ b/src/core/hle/service/prepo/prepo.cpp
@@ -57,10 +57,10 @@ private:
         IPC::RequestParser rp{ctx};
         const auto process_id = rp.PopRaw<u64>();
 
-        const auto data1 = ctx.ReadBufferSpan(0);
+        const auto data1 = ctx.ReadBuffer(0);
         const auto data2 = [&ctx] {
             if (ctx.CanReadBuffer(1)) {
-                return ctx.ReadBufferSpan(1);
+                return ctx.ReadBuffer(1);
             }
 
             return std::span<const u8>{};
@@ -84,10 +84,10 @@ private:
         const auto user_id = rp.PopRaw<u128>();
         const auto process_id = rp.PopRaw<u64>();
 
-        const auto data1 = ctx.ReadBufferSpan(0);
+        const auto data1 = ctx.ReadBuffer(0);
         const auto data2 = [&ctx] {
             if (ctx.CanReadBuffer(1)) {
-                return ctx.ReadBufferSpan(1);
+                return ctx.ReadBuffer(1);
             }
 
             return std::span<const u8>{};
@@ -136,10 +136,10 @@ private:
         IPC::RequestParser rp{ctx};
         const auto title_id = rp.PopRaw<u64>();
 
-        const auto data1 = ctx.ReadBufferSpan(0);
+        const auto data1 = ctx.ReadBuffer(0);
         const auto data2 = [&ctx] {
             if (ctx.CanReadBuffer(1)) {
-                return ctx.ReadBufferSpan(1);
+                return ctx.ReadBuffer(1);
             }
 
             return std::span<const u8>{};
@@ -160,10 +160,10 @@ private:
         const auto user_id = rp.PopRaw<u128>();
         const auto title_id = rp.PopRaw<u64>();
 
-        const auto data1 = ctx.ReadBufferSpan(0);
+        const auto data1 = ctx.ReadBuffer(0);
         const auto data2 = [&ctx] {
             if (ctx.CanReadBuffer(1)) {
-                return ctx.ReadBufferSpan(1);
+                return ctx.ReadBuffer(1);
             }
 
             return std::span<const u8>{};
diff --git a/src/core/hle/service/set/set_sys.cpp b/src/core/hle/service/set/set_sys.cpp
index f1ace8184..94c20edda 100644
--- a/src/core/hle/service/set/set_sys.cpp
+++ b/src/core/hle/service/set/set_sys.cpp
@@ -131,12 +131,12 @@ void SET_SYS::GetSettingsItemValueSize(Kernel::HLERequestContext& ctx) {
 
     // The category of the setting. This corresponds to the top-level keys of
     // system_settings.ini.
-    const auto setting_category_buf{ctx.ReadBufferSpan(0)};
+    const auto setting_category_buf{ctx.ReadBuffer(0)};
     const std::string setting_category{setting_category_buf.begin(), setting_category_buf.end()};
 
     // The name of the setting. This corresponds to the second-level keys of
     // system_settings.ini.
-    const auto setting_name_buf{ctx.ReadBufferSpan(1)};
+    const auto setting_name_buf{ctx.ReadBuffer(1)};
     const std::string setting_name{setting_name_buf.begin(), setting_name_buf.end()};
 
     auto settings{GetSettings()};
@@ -156,12 +156,12 @@ void SET_SYS::GetSettingsItemValue(Kernel::HLERequestContext& ctx) {
 
     // The category of the setting. This corresponds to the top-level keys of
     // system_settings.ini.
-    const auto setting_category_buf{ctx.ReadBufferSpan(0)};
+    const auto setting_category_buf{ctx.ReadBuffer(0)};
     const std::string setting_category{setting_category_buf.begin(), setting_category_buf.end()};
 
     // The name of the setting. This corresponds to the second-level keys of
     // system_settings.ini.
-    const auto setting_name_buf{ctx.ReadBufferSpan(1)};
+    const auto setting_name_buf{ctx.ReadBuffer(1)};
     const std::string setting_name{setting_name_buf.begin(), setting_name_buf.end()};
 
     auto settings{GetSettings()};
diff --git a/src/core/hle/service/sockets/bsd.cpp b/src/core/hle/service/sockets/bsd.cpp
index 119d6ba5b..bdb499268 100644
--- a/src/core/hle/service/sockets/bsd.cpp
+++ b/src/core/hle/service/sockets/bsd.cpp
@@ -186,7 +186,7 @@ void BSD::Poll(Kernel::HLERequestContext& ctx) {
     ExecuteWork(ctx, PollWork{
                          .nfds = nfds,
                          .timeout = timeout,
-                         .read_buffer = ctx.ReadBufferSpan(),
+                         .read_buffer = ctx.ReadBuffer(),
                          .write_buffer = std::vector<u8>(ctx.GetWriteBufferSize()),
                      });
 }
@@ -208,7 +208,7 @@ void BSD::Bind(Kernel::HLERequestContext& ctx) {
     const s32 fd = rp.Pop<s32>();
 
     LOG_DEBUG(Service, "called. fd={} addrlen={}", fd, ctx.GetReadBufferSize());
-    BuildErrnoResponse(ctx, BindImpl(fd, ctx.ReadBufferSpan()));
+    BuildErrnoResponse(ctx, BindImpl(fd, ctx.ReadBuffer()));
 }
 
 void BSD::Connect(Kernel::HLERequestContext& ctx) {
@@ -219,7 +219,7 @@ void BSD::Connect(Kernel::HLERequestContext& ctx) {
 
     ExecuteWork(ctx, ConnectWork{
                          .fd = fd,
-                         .addr = ctx.ReadBufferSpan(),
+                         .addr = ctx.ReadBuffer(),
                      });
 }
 
@@ -311,7 +311,7 @@ void BSD::SetSockOpt(Kernel::HLERequestContext& ctx) {
     const u32 level = rp.Pop<u32>();
     const OptName optname = static_cast<OptName>(rp.Pop<u32>());
 
-    const auto buffer = ctx.ReadBufferSpan();
+    const auto buffer = ctx.ReadBuffer();
     const u8* optval = buffer.empty() ? nullptr : buffer.data();
     size_t optlen = buffer.size();
 
@@ -382,7 +382,7 @@ void BSD::Send(Kernel::HLERequestContext& ctx) {
     ExecuteWork(ctx, SendWork{
                          .fd = fd,
                          .flags = flags,
-                         .message = ctx.ReadBufferSpan(),
+                         .message = ctx.ReadBuffer(),
                      });
 }
 
@@ -397,8 +397,8 @@ void BSD::SendTo(Kernel::HLERequestContext& ctx) {
     ExecuteWork(ctx, SendToWork{
                          .fd = fd,
                          .flags = flags,
-                         .message = ctx.ReadBufferSpan(0),
-                         .addr = ctx.ReadBufferSpan(1),
+                         .message = ctx.ReadBuffer(0),
+                         .addr = ctx.ReadBuffer(1),
                      });
 }
 
@@ -411,7 +411,7 @@ void BSD::Write(Kernel::HLERequestContext& ctx) {
     ExecuteWork(ctx, SendWork{
                          .fd = fd,
                          .flags = 0,
-                         .message = ctx.ReadBufferSpan(),
+                         .message = ctx.ReadBuffer(),
                      });
 }
 
diff --git a/src/core/hle/service/sockets/sfdnsres.cpp b/src/core/hle/service/sockets/sfdnsres.cpp
index 6d0e1dd6c..e96eda7f3 100644
--- a/src/core/hle/service/sockets/sfdnsres.cpp
+++ b/src/core/hle/service/sockets/sfdnsres.cpp
@@ -199,10 +199,10 @@ static std::pair<u32, s32> GetAddrInfoRequestImpl(Kernel::HLERequestContext& ctx
                 "called with ignored parameters: use_nsd_resolve={}, unknown={}, process_id={}",
                 parameters.use_nsd_resolve, parameters.unknown, parameters.process_id);
 
-    const auto host_buffer = ctx.ReadBufferSpan(0);
+    const auto host_buffer = ctx.ReadBuffer(0);
     const std::string host = Common::StringFromBuffer(host_buffer);
 
-    const auto service_buffer = ctx.ReadBufferSpan(1);
+    const auto service_buffer = ctx.ReadBuffer(1);
     const std::string service = Common::StringFromBuffer(service_buffer);
 
     addrinfo* addrinfo;
diff --git a/src/core/hle/service/ssl/ssl.cpp b/src/core/hle/service/ssl/ssl.cpp
index 10851f08f..dcf47083f 100644
--- a/src/core/hle/service/ssl/ssl.cpp
+++ b/src/core/hle/service/ssl/ssl.cpp
@@ -101,7 +101,7 @@ private:
     void ImportServerPki(Kernel::HLERequestContext& ctx) {
         IPC::RequestParser rp{ctx};
         const auto certificate_format = rp.PopEnum<CertificateFormat>();
-        [[maybe_unused]] const auto pkcs_12_certificates = ctx.ReadBufferSpan(0);
+        [[maybe_unused]] const auto pkcs_12_certificates = ctx.ReadBuffer(0);
 
         constexpr u64 server_id = 0;
 
@@ -113,10 +113,10 @@ private:
     }
 
     void ImportClientPki(Kernel::HLERequestContext& ctx) {
-        [[maybe_unused]] const auto pkcs_12_certificate = ctx.ReadBufferSpan(0);
+        [[maybe_unused]] const auto pkcs_12_certificate = ctx.ReadBuffer(0);
         [[maybe_unused]] const auto ascii_password = [&ctx] {
             if (ctx.CanReadBuffer(1)) {
-                return ctx.ReadBufferSpan(1);
+                return ctx.ReadBuffer(1);
             }
 
             return std::span<const u8>{};
diff --git a/src/core/hle/service/time/time.cpp b/src/core/hle/service/time/time.cpp
index 9376e0902..f77cdbb43 100644
--- a/src/core/hle/service/time/time.cpp
+++ b/src/core/hle/service/time/time.cpp
@@ -328,8 +328,8 @@ void Module::Interface::CalculateStandardUserSystemClockDifferenceByUser(
     Clock::ClockSnapshot snapshot_a;
     Clock::ClockSnapshot snapshot_b;
 
-    const auto snapshot_a_data = ctx.ReadBufferSpan(0);
-    const auto snapshot_b_data = ctx.ReadBufferSpan(1);
+    const auto snapshot_a_data = ctx.ReadBuffer(0);
+    const auto snapshot_b_data = ctx.ReadBuffer(1);
 
     std::memcpy(&snapshot_a, snapshot_a_data.data(), sizeof(Clock::ClockSnapshot));
     std::memcpy(&snapshot_b, snapshot_b_data.data(), sizeof(Clock::ClockSnapshot));
@@ -355,8 +355,8 @@ void Module::Interface::CalculateSpanBetween(Kernel::HLERequestContext& ctx) {
     Clock::ClockSnapshot snapshot_a;
     Clock::ClockSnapshot snapshot_b;
 
-    const auto snapshot_a_data = ctx.ReadBufferSpan(0);
-    const auto snapshot_b_data = ctx.ReadBufferSpan(1);
+    const auto snapshot_a_data = ctx.ReadBuffer(0);
+    const auto snapshot_b_data = ctx.ReadBuffer(1);
 
     std::memcpy(&snapshot_a, snapshot_a_data.data(), sizeof(Clock::ClockSnapshot));
     std::memcpy(&snapshot_b, snapshot_b_data.data(), sizeof(Clock::ClockSnapshot));
diff --git a/src/core/hle/service/time/time_zone_service.cpp b/src/core/hle/service/time/time_zone_service.cpp
index 6d05a66f1..961040bfc 100644
--- a/src/core/hle/service/time/time_zone_service.cpp
+++ b/src/core/hle/service/time/time_zone_service.cpp
@@ -84,7 +84,7 @@ void ITimeZoneService::ToCalendarTime(Kernel::HLERequestContext& ctx) {
     LOG_DEBUG(Service_Time, "called, posix_time=0x{:016X}", posix_time);
 
     TimeZone::TimeZoneRule time_zone_rule{};
-    const auto buffer{ctx.ReadBufferSpan()};
+    const auto buffer{ctx.ReadBuffer()};
     std::memcpy(&time_zone_rule, buffer.data(), buffer.size());
 
     TimeZone::CalendarInfo calendar_info{};
@@ -128,7 +128,7 @@ void ITimeZoneService::ToPosixTime(Kernel::HLERequestContext& ctx) {
     IPC::RequestParser rp{ctx};
     const auto calendar_time{rp.PopRaw<TimeZone::CalendarTime>()};
     TimeZone::TimeZoneRule time_zone_rule{};
-    std::memcpy(&time_zone_rule, ctx.ReadBufferSpan().data(), sizeof(TimeZone::TimeZoneRule));
+    std::memcpy(&time_zone_rule, ctx.ReadBuffer().data(), sizeof(TimeZone::TimeZoneRule));
 
     s64 posix_time{};
     if (const Result result{time_zone_content_manager.GetTimeZoneManager().ToPosixTime(