Skip to content

Commit 35dddde

Browse files
authored
Fix sanitizers issues (#4050)
ubsan detected 'lib/Dialect/TorchConversion/Transforms/UnpackQuantTensor.cpp:109:21: runtime error: left shift of negative value -16' and asan detected `memcpy` with nullptr when we passed and empty vector with `.data() == nullptr` to mlirOperationStateAddResults. Detected using #4046
1 parent ac944a7 commit 35dddde

File tree

2 files changed

+5
-1
lines changed

2 files changed

+5
-1
lines changed

lib/Dialect/TorchConversion/Transforms/UnpackQuantTensor.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ class UnpackQuantizedMatmulWeights
101101
APInt(unpackedBitWidth, 0));
102102
for (int i = 0, e = data.size(); i < e; ++i) {
103103
auto el = data[i];
104-
char mask = (1 << unpackedBitWidth) - 1;
104+
uint8_t mask = (1 << unpackedBitWidth) - 1;
105105
for (int b = 0; b < packRatio; b++) {
106106
newData[i * packRatio + b] =
107107
APInt(unpackedBitWidth, (el & mask) >> (unpackedBitWidth * b),

projects/jit_ir_common/csrc/jit_ir_importer/mlir_utils.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,11 +69,15 @@ inline void addToMlirOperationState(MlirOperationState &state,
6969

7070
inline void addToMlirOperationState(MlirOperationState &state,
7171
const std::vector<MlirType> &resultTypes) {
72+
if (resultTypes.empty())
73+
return; // must not proceed when resultTypes.data() is nullptr.
7274
mlirOperationStateAddResults(&state, resultTypes.size(), resultTypes.data());
7375
}
7476

7577
inline void addToMlirOperationState(MlirOperationState &state,
7678
c10::ArrayRef<MlirType> resultTypes) {
79+
if (resultTypes.empty())
80+
return; // must not proceed when resultTypes.data() is nullptr.
7781
mlirOperationStateAddResults(&state, resultTypes.size(), resultTypes.data());
7882
}
7983

0 commit comments

Comments
 (0)