Skip to content

Commit 8d36ee3

Browse files
committed
Revert "fix: System shared memory boundary check (#8335) (#8337)"
This reverts commit dfd3148.
1 parent 903fbd0 commit 8d36ee3

2 files changed

Lines changed: 14 additions & 21 deletions

File tree

qa/L0_shared_memory/shared_memory_test.py

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@
4747

4848
class SystemSharedMemoryTestBase(tu.TestResultCollector):
4949
DEFAULT_SHM_BYTE_SIZE = 64
50-
SYS_PAGE_SIZE = os.sysconf("SC_PAGE_SIZE")
5150

5251
def setUp(self):
5352
self._setup_client()
@@ -306,10 +305,11 @@ def test_large_shm_register_offset(self):
306305

307306
# Test for large offset
308307
error_msg = []
308+
page_size = os.sysconf("SC_PAGE_SIZE")
309309
# Create a large shm size (page_size * 1024 is large enough to reproduce a segfault).
310310
# Register offset at 1 page before the end of the shm region to give enough space for the input/output data.
311-
create_byte_size = self.SYS_PAGE_SIZE * 1024
312-
register_offset = self.SYS_PAGE_SIZE * 1023
311+
create_byte_size = page_size * 1024
312+
register_offset = page_size * 1023
313313
self._configure_server(
314314
create_byte_size=create_byte_size,
315315
register_offset=register_offset,
@@ -372,12 +372,7 @@ def test_unregisterall(self):
372372
def test_infer_offset_out_of_bound(self):
373373
# Shared memory offset outside output region - Throws error
374374
error_msg = []
375-
create_byte_size = self.SYS_PAGE_SIZE + self.DEFAULT_SHM_BYTE_SIZE
376-
register_offset = self.SYS_PAGE_SIZE
377-
self._configure_server(
378-
create_byte_size=create_byte_size,
379-
register_offset=register_offset,
380-
)
375+
self._configure_server()
381376
if self.protocol == "http":
382377
# -32 when placed in an int64 signed type, to get a negative offset
383378
# by overflowing
@@ -407,13 +402,8 @@ def test_infer_offset_out_of_bound(self):
407402
def test_infer_byte_size_out_of_bound(self):
408403
# Shared memory byte_size outside output region - Throws error
409404
error_msg = []
410-
create_byte_size = self.SYS_PAGE_SIZE + self.DEFAULT_SHM_BYTE_SIZE
411-
register_offset = self.SYS_PAGE_SIZE
412-
self._configure_server(
413-
create_byte_size=create_byte_size,
414-
register_offset=register_offset,
415-
)
416-
offset = 1
405+
self._configure_server()
406+
offset = 60
417407
byte_size = self.DEFAULT_SHM_BYTE_SIZE
418408

419409
iu.shm_basic_infer(

src/shared_memory_manager.cc

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -475,11 +475,14 @@ SharedMemoryManager::GetMemoryInfo(
475475
}
476476

477477
// validate offset
478-
size_t shm_region_size = 0;
478+
size_t shm_region_end = 0;
479+
if (it->second->kind_ == TRITONSERVER_MEMORY_CPU) {
480+
shm_region_end = it->second->offset_;
481+
}
479482
if (it->second->byte_size_ > 0) {
480-
shm_region_size += it->second->byte_size_;
483+
shm_region_end += it->second->byte_size_ - 1;
481484
}
482-
if (offset >= shm_region_size) {
485+
if (offset > shm_region_end) {
483486
return TRITONSERVER_ErrorNew(
484487
TRITONSERVER_ERROR_INVALID_ARG,
485488
std::string("Invalid offset for shared memory region: '" + name + "'")
@@ -499,8 +502,8 @@ SharedMemoryManager::GetMemoryInfo(
499502
}
500503

501504
// validate byte_size + offset is within memory bounds
502-
size_t total_req_shm = offset + byte_size;
503-
if (total_req_shm > shm_region_size) {
505+
size_t total_req_shm = offset + byte_size - 1;
506+
if (total_req_shm > shm_region_end) {
504507
return TRITONSERVER_ErrorNew(
505508
TRITONSERVER_ERROR_INVALID_ARG,
506509
std::string(

0 commit comments

Comments
 (0)