You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
As seen with ancient Intel OpenCL on "super". I think this is a real bug. I'm not sure which exact kernel and parameter this refers to (it doesn't say, so it'll take a bit of effort to find out), but looking at opencl_axcrypt2_fmt_plug.c I see we allocate mem_salt as buffer of axcrypt2_salt_t, but then we reuse it twice: with crypt_kernel and with final_kernel. While axcrypt2_kernel.clfinal_kernel does expect a __constant axcrypt2_salt_t *salt, which is hopefully the same type, we reuse a shared PBKDF2 kernel that expects its own salt type. While that type is made the first field of axcrypt2_salt_t, that may not be good enough per OpenCL spec and for all implementations.
Indeed, these related structs are of different size, so if we're talking an array of them, then wouldn't elements starting with the 2nd be at wrong offsets for one of the kernels? Yet somehow this works on most devices, so I guess their OpenCL runtimes implement buffers by passing individual element offsets or something. But are they required to?
I wonder if this format works with recent Intel OpenCL.
The text was updated successfully, but these errors were encountered:
As seen with ancient Intel OpenCL on "super". I think this is a real bug. I'm not sure which exact kernel and parameter this refers to (it doesn't say, so it'll take a bit of effort to find out), but looking at
opencl_axcrypt2_fmt_plug.c
I see we allocatemem_salt
as buffer ofaxcrypt2_salt_t
, but then we reuse it twice: withcrypt_kernel
and withfinal_kernel
. Whileaxcrypt2_kernel.cl
final_kernel
does expect a__constant axcrypt2_salt_t *salt
, which is hopefully the same type, we reuse a shared PBKDF2 kernel that expects its own salt type. While that type is made the first field ofaxcrypt2_salt_t
, that may not be good enough per OpenCL spec and for all implementations.Indeed, these related structs are of different size, so if we're talking an array of them, then wouldn't elements starting with the 2nd be at wrong offsets for one of the kernels? Yet somehow this works on most devices, so I guess their OpenCL runtimes implement buffers by passing individual element offsets or something. But are they required to?
I wonder if this format works with recent Intel OpenCL.
The text was updated successfully, but these errors were encountered: