From: Jakub Kuderski Date: Fri, 13 Jan 2023 15:55:04 +0000 (-0500) Subject: [PATCH] [mlir][spirv] Fix crash in spirv-lower-abi-attributes X-Git-Tag: archive/raspbian/1%14.0.6-16+rpi1^2~1 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=4da56fc74d2efc6155ed59d6b079c087a1e3a47a;p=llvm-toolchain-14.git [PATCH] [mlir][spirv] Fix crash in spirv-lower-abi-attributes ... when the are no SPIR-V env attributes. Fixes: https://github.com/llvm/llvm-project/issues/59983 Reviewed By: antiagainst Differential Revision: https://reviews.llvm.org/D141695 Gbp-Pq: Name CVE-2023-29939.patch --- diff --git a/mlir/lib/Dialect/SPIRV/Transforms/LowerABIAttributesPass.cpp b/mlir/lib/Dialect/SPIRV/Transforms/LowerABIAttributesPass.cpp index 6094ad8bf2..bd98dc6258 100644 --- a/mlir/lib/Dialect/SPIRV/Transforms/LowerABIAttributesPass.cpp +++ b/mlir/lib/Dialect/SPIRV/Transforms/LowerABIAttributesPass.cpp @@ -235,7 +235,12 @@ void LowerABIAttributesPass::runOnOperation() { spirv::ModuleOp module = getOperation(); MLIRContext *context = &getContext(); - spirv::TargetEnv targetEnv(spirv::lookupTargetEnv(module)); + spirv::TargetEnvAttr targetEnvAttr = spirv::lookupTargetEnv(module); + if (!targetEnvAttr) { + module->emitOpError("missing SPIR-V target env attribute"); + return signalPassFailure(); + } + spirv::TargetEnv targetEnv(targetEnvAttr); SPIRVTypeConverter typeConverter(targetEnv); diff --git a/mlir/test/Dialect/SPIRV/Transforms/abi-interface.mlir b/mlir/test/Dialect/SPIRV/Transforms/abi-interface.mlir index f3b9caf7a1..98b880a9df 100644 --- a/mlir/test/Dialect/SPIRV/Transforms/abi-interface.mlir +++ b/mlir/test/Dialect/SPIRV/Transforms/abi-interface.mlir @@ -29,3 +29,10 @@ spv.module Logical GLSL450 { } // end spv.module } // end module + +// ----- + +module { +// expected-error@+1 {{'spirv.module' op missing SPIR-V target env attribute}} +spirv.module Logical GLSL450 {} +} // end module