mirror of
https://github.com/hashcat/hashcat
synced 2024-11-20 23:27:31 +01:00
OpenCL Kernel: Refactored read_kernel_binary to load only a single kernel for a single device
This commit is contained in:
parent
5a2e7f2a3a
commit
cc223123e9
@ -71,6 +71,7 @@
|
|||||||
- Mask Checks: Added additional memory cleanups after parsing/verifying masks
|
- Mask Checks: Added additional memory cleanups after parsing/verifying masks
|
||||||
- OpenCL Device Management: Fixed several memory leaks in case initialization of an OpenCL device or platform failed
|
- OpenCL Device Management: Fixed several memory leaks in case initialization of an OpenCL device or platform failed
|
||||||
- OpenCL Kernel: Move kernel binary buffer from heap to stack memory
|
- OpenCL Kernel: Move kernel binary buffer from heap to stack memory
|
||||||
|
- OpenCL Kernel: Refactored read_kernel_binary to load only a single kernel for a single device
|
||||||
- Outfile Check: Fixed a memory leak for failed outfile reads
|
- Outfile Check: Fixed a memory leak for failed outfile reads
|
||||||
- Rule Engine: Fixed several memory leaks in case loading of rules failed
|
- Rule Engine: Fixed several memory leaks in case loading of rules failed
|
||||||
- Session Management: Fixed several memory leaks in case profile- or install-folder setup failed
|
- Session Management: Fixed several memory leaks in case profile- or install-folder setup failed
|
||||||
|
23
src/opencl.c
23
src/opencl.c
@ -298,7 +298,7 @@ static int setup_device_types_filter (hashcat_ctx_t *hashcat_ctx, const char *op
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int read_kernel_binary (hashcat_ctx_t *hashcat_ctx, const char *kernel_file, int num_devices, size_t *kernel_lengths, char **kernel_sources)
|
static int read_kernel_binary (hashcat_ctx_t *hashcat_ctx, const char *kernel_file, size_t *kernel_lengths, char **kernel_sources)
|
||||||
{
|
{
|
||||||
FILE *fp = fopen (kernel_file, "rb");
|
FILE *fp = fopen (kernel_file, "rb");
|
||||||
|
|
||||||
@ -323,12 +323,9 @@ static int read_kernel_binary (hashcat_ctx_t *hashcat_ctx, const char *kernel_fi
|
|||||||
|
|
||||||
buf[st.st_size] = 0;
|
buf[st.st_size] = 0;
|
||||||
|
|
||||||
for (int i = 0; i < num_devices; i++)
|
kernel_lengths[0] = (size_t) st.st_size;
|
||||||
{
|
|
||||||
kernel_lengths[i] = (size_t) st.st_size;
|
|
||||||
|
|
||||||
kernel_sources[i] = buf;
|
kernel_sources[0] = buf;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -3934,7 +3931,7 @@ int opencl_session_begin (hashcat_ctx_t *hashcat_ctx)
|
|||||||
if (user_options->quiet == false) event_log_warning (hashcat_ctx, "* Device #%u: Kernel %s not found in cache! Building may take a while...", device_id + 1, filename_from_filepath (cached_file));
|
if (user_options->quiet == false) event_log_warning (hashcat_ctx, "* Device #%u: Kernel %s not found in cache! Building may take a while...", device_id + 1, filename_from_filepath (cached_file));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const int rc_read_kernel = read_kernel_binary (hashcat_ctx, source_file, 1, kernel_lengths, kernel_sources);
|
const int rc_read_kernel = read_kernel_binary (hashcat_ctx, source_file, kernel_lengths, kernel_sources);
|
||||||
|
|
||||||
if (rc_read_kernel == -1) return -1;
|
if (rc_read_kernel == -1) return -1;
|
||||||
|
|
||||||
@ -3998,7 +3995,7 @@ int opencl_session_begin (hashcat_ctx_t *hashcat_ctx)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
const int rc_read_kernel = read_kernel_binary (hashcat_ctx, cached_file, 1, kernel_lengths, kernel_sources);
|
const int rc_read_kernel = read_kernel_binary (hashcat_ctx, cached_file, kernel_lengths, kernel_sources);
|
||||||
|
|
||||||
if (rc_read_kernel == -1) return -1;
|
if (rc_read_kernel == -1) return -1;
|
||||||
|
|
||||||
@ -4013,7 +4010,7 @@ int opencl_session_begin (hashcat_ctx_t *hashcat_ctx)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
const int rc_read_kernel = read_kernel_binary (hashcat_ctx, source_file, 1, kernel_lengths, kernel_sources);
|
const int rc_read_kernel = read_kernel_binary (hashcat_ctx, source_file, kernel_lengths, kernel_sources);
|
||||||
|
|
||||||
if (rc_read_kernel == -1) return -1;
|
if (rc_read_kernel == -1) return -1;
|
||||||
|
|
||||||
@ -4135,7 +4132,7 @@ int opencl_session_begin (hashcat_ctx_t *hashcat_ctx)
|
|||||||
if (user_options->quiet == false) event_log_warning (hashcat_ctx, "* Device #%u: Kernel %s not found in cache! Building may take a while...", device_id + 1, filename_from_filepath (cached_file));
|
if (user_options->quiet == false) event_log_warning (hashcat_ctx, "* Device #%u: Kernel %s not found in cache! Building may take a while...", device_id + 1, filename_from_filepath (cached_file));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const int rc_read_kernel = read_kernel_binary (hashcat_ctx, source_file, 1, kernel_lengths, kernel_sources);
|
const int rc_read_kernel = read_kernel_binary (hashcat_ctx, source_file, kernel_lengths, kernel_sources);
|
||||||
|
|
||||||
if (rc_read_kernel == -1) return -1;
|
if (rc_read_kernel == -1) return -1;
|
||||||
|
|
||||||
@ -4197,7 +4194,7 @@ int opencl_session_begin (hashcat_ctx_t *hashcat_ctx)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
const int rc_read_kernel = read_kernel_binary (hashcat_ctx, cached_file, 1, kernel_lengths, kernel_sources);
|
const int rc_read_kernel = read_kernel_binary (hashcat_ctx, cached_file, kernel_lengths, kernel_sources);
|
||||||
|
|
||||||
if (rc_read_kernel == -1) return -1;
|
if (rc_read_kernel == -1) return -1;
|
||||||
|
|
||||||
@ -4276,7 +4273,7 @@ int opencl_session_begin (hashcat_ctx_t *hashcat_ctx)
|
|||||||
if (user_options->quiet == false) event_log_warning (hashcat_ctx, "* Device #%u: Kernel %s not found in cache! Building may take a while...", device_id + 1, filename_from_filepath (cached_file));
|
if (user_options->quiet == false) event_log_warning (hashcat_ctx, "* Device #%u: Kernel %s not found in cache! Building may take a while...", device_id + 1, filename_from_filepath (cached_file));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const int rc_read_kernel = read_kernel_binary (hashcat_ctx, source_file, 1, kernel_lengths, kernel_sources);
|
const int rc_read_kernel = read_kernel_binary (hashcat_ctx, source_file, kernel_lengths, kernel_sources);
|
||||||
|
|
||||||
if (rc_read_kernel == -1) return -1;
|
if (rc_read_kernel == -1) return -1;
|
||||||
|
|
||||||
@ -4338,7 +4335,7 @@ int opencl_session_begin (hashcat_ctx_t *hashcat_ctx)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
const int rc_read_kernel = read_kernel_binary (hashcat_ctx, cached_file, 1, kernel_lengths, kernel_sources);
|
const int rc_read_kernel = read_kernel_binary (hashcat_ctx, cached_file, kernel_lengths, kernel_sources);
|
||||||
|
|
||||||
if (rc_read_kernel == -1) return -1;
|
if (rc_read_kernel == -1) return -1;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user