- Notifications
You must be signed in to change notification settings - Fork2.2k
Description
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 atopencl_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.