mirror of
https://github.com/tnodir/fort
synced 2024-11-15 07:57:24 +00:00
Driver: Add FORT_CHECK_STACK() to functions
This commit is contained in:
parent
2a7ef99209
commit
9f10b73aba
@ -314,6 +314,8 @@ static void fort_device_cancel_pending(PDEVICE_OBJECT device, PIRP irp)
|
|||||||
{
|
{
|
||||||
UNUSED(device);
|
UNUSED(device);
|
||||||
|
|
||||||
|
FORT_CHECK_STACK();
|
||||||
|
|
||||||
ULONG_PTR info;
|
ULONG_PTR info;
|
||||||
|
|
||||||
const NTSTATUS status = fort_buffer_cancel_pending(&fort_device()->buffer, irp, &info);
|
const NTSTATUS status = fort_buffer_cancel_pending(&fort_device()->buffer, irp, &info);
|
||||||
|
@ -391,6 +391,8 @@ static void NTAPI fort_callout_connect_v4(const FWPS_INCOMING_VALUES0 *inFixedVa
|
|||||||
const FWPS_INCOMING_METADATA_VALUES0 *inMetaValues, PVOID layerData,
|
const FWPS_INCOMING_METADATA_VALUES0 *inMetaValues, PVOID layerData,
|
||||||
const FWPS_FILTER0 *filter, UINT64 flowContext, FWPS_CLASSIFY_OUT0 *classifyOut)
|
const FWPS_FILTER0 *filter, UINT64 flowContext, FWPS_CLASSIFY_OUT0 *classifyOut)
|
||||||
{
|
{
|
||||||
|
FORT_CHECK_STACK();
|
||||||
|
|
||||||
FORT_CALLOUT_ARG ca = {
|
FORT_CALLOUT_ARG ca = {
|
||||||
.inFixedValues = inFixedValues,
|
.inFixedValues = inFixedValues,
|
||||||
.inMetaValues = inMetaValues,
|
.inMetaValues = inMetaValues,
|
||||||
@ -418,6 +420,8 @@ static void NTAPI fort_callout_connect_v6(const FWPS_INCOMING_VALUES0 *inFixedVa
|
|||||||
const FWPS_INCOMING_METADATA_VALUES0 *inMetaValues, PVOID layerData,
|
const FWPS_INCOMING_METADATA_VALUES0 *inMetaValues, PVOID layerData,
|
||||||
const FWPS_FILTER0 *filter, UINT64 flowContext, FWPS_CLASSIFY_OUT0 *classifyOut)
|
const FWPS_FILTER0 *filter, UINT64 flowContext, FWPS_CLASSIFY_OUT0 *classifyOut)
|
||||||
{
|
{
|
||||||
|
FORT_CHECK_STACK();
|
||||||
|
|
||||||
FORT_CALLOUT_ARG ca = {
|
FORT_CALLOUT_ARG ca = {
|
||||||
.inFixedValues = inFixedValues,
|
.inFixedValues = inFixedValues,
|
||||||
.inMetaValues = inMetaValues,
|
.inMetaValues = inMetaValues,
|
||||||
@ -445,6 +449,8 @@ static void NTAPI fort_callout_accept_v4(const FWPS_INCOMING_VALUES0 *inFixedVal
|
|||||||
const FWPS_INCOMING_METADATA_VALUES0 *inMetaValues, PVOID layerData,
|
const FWPS_INCOMING_METADATA_VALUES0 *inMetaValues, PVOID layerData,
|
||||||
const FWPS_FILTER0 *filter, UINT64 flowContext, FWPS_CLASSIFY_OUT0 *classifyOut)
|
const FWPS_FILTER0 *filter, UINT64 flowContext, FWPS_CLASSIFY_OUT0 *classifyOut)
|
||||||
{
|
{
|
||||||
|
FORT_CHECK_STACK();
|
||||||
|
|
||||||
FORT_CALLOUT_ARG ca = {
|
FORT_CALLOUT_ARG ca = {
|
||||||
.inFixedValues = inFixedValues,
|
.inFixedValues = inFixedValues,
|
||||||
.inMetaValues = inMetaValues,
|
.inMetaValues = inMetaValues,
|
||||||
@ -472,6 +478,8 @@ static void NTAPI fort_callout_accept_v6(const FWPS_INCOMING_VALUES0 *inFixedVal
|
|||||||
const FWPS_INCOMING_METADATA_VALUES0 *inMetaValues, PVOID layerData,
|
const FWPS_INCOMING_METADATA_VALUES0 *inMetaValues, PVOID layerData,
|
||||||
const FWPS_FILTER0 *filter, UINT64 flowContext, FWPS_CLASSIFY_OUT0 *classifyOut)
|
const FWPS_FILTER0 *filter, UINT64 flowContext, FWPS_CLASSIFY_OUT0 *classifyOut)
|
||||||
{
|
{
|
||||||
|
FORT_CHECK_STACK();
|
||||||
|
|
||||||
FORT_CALLOUT_ARG ca = {
|
FORT_CALLOUT_ARG ca = {
|
||||||
.inFixedValues = inFixedValues,
|
.inFixedValues = inFixedValues,
|
||||||
.inMetaValues = inMetaValues,
|
.inMetaValues = inMetaValues,
|
||||||
@ -518,6 +526,8 @@ static void NTAPI fort_callout_stream_classify(const FWPS_INCOMING_VALUES0 *inFi
|
|||||||
const FWPS_INCOMING_METADATA_VALUES0 *inMetaValues, PVOID layerData,
|
const FWPS_INCOMING_METADATA_VALUES0 *inMetaValues, PVOID layerData,
|
||||||
const FWPS_FILTER0 *filter, UINT64 flowContext, FWPS_CLASSIFY_OUT0 *classifyOut)
|
const FWPS_FILTER0 *filter, UINT64 flowContext, FWPS_CLASSIFY_OUT0 *classifyOut)
|
||||||
{
|
{
|
||||||
|
FORT_CHECK_STACK();
|
||||||
|
|
||||||
FWPS_STREAM_CALLOUT_IO_PACKET0 *packet = layerData;
|
FWPS_STREAM_CALLOUT_IO_PACKET0 *packet = layerData;
|
||||||
|
|
||||||
const FWPS_STREAM_DATA0 *streamData = packet->streamData;
|
const FWPS_STREAM_DATA0 *streamData = packet->streamData;
|
||||||
@ -561,6 +571,8 @@ static void NTAPI fort_callout_datagram_classify_v4(const FWPS_INCOMING_VALUES0
|
|||||||
const FWPS_INCOMING_METADATA_VALUES0 *inMetaValues, PVOID layerData,
|
const FWPS_INCOMING_METADATA_VALUES0 *inMetaValues, PVOID layerData,
|
||||||
const FWPS_FILTER0 *filter, UINT64 flowContext, FWPS_CLASSIFY_OUT0 *classifyOut)
|
const FWPS_FILTER0 *filter, UINT64 flowContext, FWPS_CLASSIFY_OUT0 *classifyOut)
|
||||||
{
|
{
|
||||||
|
FORT_CHECK_STACK();
|
||||||
|
|
||||||
FORT_CALLOUT_ARG ca = {
|
FORT_CALLOUT_ARG ca = {
|
||||||
.inFixedValues = inFixedValues,
|
.inFixedValues = inFixedValues,
|
||||||
.inMetaValues = inMetaValues,
|
.inMetaValues = inMetaValues,
|
||||||
@ -581,6 +593,8 @@ static void NTAPI fort_callout_datagram_classify_v6(const FWPS_INCOMING_VALUES0
|
|||||||
const FWPS_INCOMING_METADATA_VALUES0 *inMetaValues, PVOID layerData,
|
const FWPS_INCOMING_METADATA_VALUES0 *inMetaValues, PVOID layerData,
|
||||||
const FWPS_FILTER0 *filter, UINT64 flowContext, FWPS_CLASSIFY_OUT0 *classifyOut)
|
const FWPS_FILTER0 *filter, UINT64 flowContext, FWPS_CLASSIFY_OUT0 *classifyOut)
|
||||||
{
|
{
|
||||||
|
FORT_CHECK_STACK();
|
||||||
|
|
||||||
FORT_CALLOUT_ARG ca = {
|
FORT_CALLOUT_ARG ca = {
|
||||||
.inFixedValues = inFixedValues,
|
.inFixedValues = inFixedValues,
|
||||||
.inMetaValues = inMetaValues,
|
.inMetaValues = inMetaValues,
|
||||||
@ -631,6 +645,8 @@ static void NTAPI fort_callout_transport_classify_in(const FWPS_INCOMING_VALUES0
|
|||||||
const FWPS_INCOMING_METADATA_VALUES0 *inMetaValues, PVOID layerData,
|
const FWPS_INCOMING_METADATA_VALUES0 *inMetaValues, PVOID layerData,
|
||||||
const FWPS_FILTER0 *filter, UINT64 flowContext, FWPS_CLASSIFY_OUT0 *classifyOut)
|
const FWPS_FILTER0 *filter, UINT64 flowContext, FWPS_CLASSIFY_OUT0 *classifyOut)
|
||||||
{
|
{
|
||||||
|
FORT_CHECK_STACK();
|
||||||
|
|
||||||
FORT_CALLOUT_ARG ca = {
|
FORT_CALLOUT_ARG ca = {
|
||||||
.inFixedValues = inFixedValues,
|
.inFixedValues = inFixedValues,
|
||||||
.inMetaValues = inMetaValues,
|
.inMetaValues = inMetaValues,
|
||||||
@ -648,6 +664,8 @@ static void NTAPI fort_callout_transport_classify_out(const FWPS_INCOMING_VALUES
|
|||||||
const FWPS_INCOMING_METADATA_VALUES0 *inMetaValues, PVOID layerData,
|
const FWPS_INCOMING_METADATA_VALUES0 *inMetaValues, PVOID layerData,
|
||||||
const FWPS_FILTER0 *filter, UINT64 flowContext, FWPS_CLASSIFY_OUT0 *classifyOut)
|
const FWPS_FILTER0 *filter, UINT64 flowContext, FWPS_CLASSIFY_OUT0 *classifyOut)
|
||||||
{
|
{
|
||||||
|
FORT_CHECK_STACK();
|
||||||
|
|
||||||
FORT_CALLOUT_ARG ca = {
|
FORT_CALLOUT_ARG ca = {
|
||||||
.inFixedValues = inFixedValues,
|
.inFixedValues = inFixedValues,
|
||||||
.inMetaValues = inMetaValues,
|
.inMetaValues = inMetaValues,
|
||||||
@ -869,6 +887,8 @@ static NTSTATUS fort_callout_force_reauth_prov(
|
|||||||
|
|
||||||
FORT_API NTSTATUS fort_callout_force_reauth(const FORT_CONF_FLAGS old_conf_flags)
|
FORT_API NTSTATUS fort_callout_force_reauth(const FORT_CONF_FLAGS old_conf_flags)
|
||||||
{
|
{
|
||||||
|
FORT_CHECK_STACK();
|
||||||
|
|
||||||
NTSTATUS status;
|
NTSTATUS status;
|
||||||
|
|
||||||
/* Check app group periods & update group_bits */
|
/* Check app group periods & update group_bits */
|
||||||
@ -952,8 +972,10 @@ inline static void fort_callout_flush_stat_traf(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
FORT_API void NTAPI fort_callout_timer(void)
|
FORT_API void fort_callout_timer(void)
|
||||||
{
|
{
|
||||||
|
FORT_CHECK_STACK();
|
||||||
|
|
||||||
PFORT_BUFFER buf = &fort_device()->buffer;
|
PFORT_BUFFER buf = &fort_device()->buffer;
|
||||||
PFORT_STAT stat = &fort_device()->stat;
|
PFORT_STAT stat = &fort_device()->stat;
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@ FORT_API void fort_callout_remove(void);
|
|||||||
|
|
||||||
FORT_API NTSTATUS fort_callout_force_reauth(const FORT_CONF_FLAGS old_conf_flags);
|
FORT_API NTSTATUS fort_callout_force_reauth(const FORT_CONF_FLAGS old_conf_flags);
|
||||||
|
|
||||||
FORT_API void NTAPI fort_callout_timer(void);
|
FORT_API void fort_callout_timer(void);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
} // extern "C"
|
} // extern "C"
|
||||||
|
@ -25,6 +25,8 @@ FORT_API void fort_device_set(PFORT_DEVICE device)
|
|||||||
|
|
||||||
static void fort_worker_reauth(void)
|
static void fort_worker_reauth(void)
|
||||||
{
|
{
|
||||||
|
FORT_CHECK_STACK();
|
||||||
|
|
||||||
const FORT_CONF_FLAGS conf_flags = fort_device()->conf.conf_flags;
|
const FORT_CONF_FLAGS conf_flags = fort_device()->conf.conf_flags;
|
||||||
|
|
||||||
const NTSTATUS status = fort_callout_force_reauth(conf_flags);
|
const NTSTATUS status = fort_callout_force_reauth(conf_flags);
|
||||||
@ -35,8 +37,10 @@ static void fort_worker_reauth(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void NTAPI fort_app_period_timer(void)
|
static void fort_app_period_timer(void)
|
||||||
{
|
{
|
||||||
|
FORT_CHECK_STACK();
|
||||||
|
|
||||||
if (fort_conf_ref_period_update(&fort_device()->conf, /*force=*/FALSE, /*periods_n=*/NULL)) {
|
if (fort_conf_ref_period_update(&fort_device()->conf, /*force=*/FALSE, /*periods_n=*/NULL)) {
|
||||||
fort_worker_queue(&fort_device()->worker, FORT_WORKER_REAUTH);
|
fort_worker_queue(&fort_device()->worker, FORT_WORKER_REAUTH);
|
||||||
}
|
}
|
||||||
@ -53,6 +57,8 @@ FORT_API NTSTATUS fort_device_create(PDEVICE_OBJECT device, PIRP irp)
|
|||||||
{
|
{
|
||||||
UNUSED(device);
|
UNUSED(device);
|
||||||
|
|
||||||
|
FORT_CHECK_STACK();
|
||||||
|
|
||||||
NTSTATUS status = STATUS_SUCCESS;
|
NTSTATUS status = STATUS_SUCCESS;
|
||||||
|
|
||||||
/* Device opened */
|
/* Device opened */
|
||||||
@ -75,6 +81,8 @@ FORT_API NTSTATUS fort_device_close(PDEVICE_OBJECT device, PIRP irp)
|
|||||||
{
|
{
|
||||||
UNUSED(device);
|
UNUSED(device);
|
||||||
|
|
||||||
|
FORT_CHECK_STACK();
|
||||||
|
|
||||||
fort_request_complete(irp, STATUS_SUCCESS);
|
fort_request_complete(irp, STATUS_SUCCESS);
|
||||||
|
|
||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
@ -84,6 +92,8 @@ FORT_API NTSTATUS fort_device_cleanup(PDEVICE_OBJECT device, PIRP irp)
|
|||||||
{
|
{
|
||||||
UNUSED(device);
|
UNUSED(device);
|
||||||
|
|
||||||
|
FORT_CHECK_STACK();
|
||||||
|
|
||||||
/* Device closed */
|
/* Device closed */
|
||||||
fort_device_flag_set(
|
fort_device_flag_set(
|
||||||
&fort_device()->conf, (FORT_DEVICE_IS_OPENED | FORT_DEVICE_IS_VALIDATED), FALSE);
|
&fort_device()->conf, (FORT_DEVICE_IS_OPENED | FORT_DEVICE_IS_VALIDATED), FALSE);
|
||||||
@ -291,6 +301,8 @@ FORT_API NTSTATUS fort_device_control(PDEVICE_OBJECT device, PIRP irp)
|
|||||||
{
|
{
|
||||||
UNUSED(device);
|
UNUSED(device);
|
||||||
|
|
||||||
|
FORT_CHECK_STACK();
|
||||||
|
|
||||||
ULONG_PTR info = 0;
|
ULONG_PTR info = 0;
|
||||||
|
|
||||||
const PIO_STACK_LOCATION irp_stack = IoGetCurrentIrpStackLocation(irp);
|
const PIO_STACK_LOCATION irp_stack = IoGetCurrentIrpStackLocation(irp);
|
||||||
@ -312,6 +324,8 @@ FORT_API NTSTATUS fort_device_shutdown(PDEVICE_OBJECT device, PIRP irp)
|
|||||||
{
|
{
|
||||||
UNUSED(device);
|
UNUSED(device);
|
||||||
|
|
||||||
|
FORT_CHECK_STACK();
|
||||||
|
|
||||||
if (fort_device() != NULL) {
|
if (fort_device() != NULL) {
|
||||||
fort_stat_close_flows(&fort_device()->stat);
|
fort_stat_close_flows(&fort_device()->stat);
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
#include "forttrace.h"
|
#include "forttrace.h"
|
||||||
#include "fortutl.h"
|
#include "fortutl.h"
|
||||||
|
|
||||||
#define FORT_STACK_USAGE_FREE_MIN (1 * 1024)
|
#define FORT_STACK_USAGE_FREE_MIN 400
|
||||||
|
|
||||||
FORT_API void fort_check_stack_usage(const char *func_name)
|
FORT_API void fort_check_stack_usage(const char *func_name)
|
||||||
{
|
{
|
||||||
@ -83,6 +83,8 @@ static NTSTATUS fort_driver_create_device(PDRIVER_OBJECT driver, PUNICODE_STRING
|
|||||||
|
|
||||||
static void fort_driver_unload(PDRIVER_OBJECT driver)
|
static void fort_driver_unload(PDRIVER_OBJECT driver)
|
||||||
{
|
{
|
||||||
|
FORT_CHECK_STACK();
|
||||||
|
|
||||||
if (fort_device() == NULL)
|
if (fort_device() == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -372,6 +372,8 @@ static void NTAPI fort_packet_inject_complete(
|
|||||||
{
|
{
|
||||||
UNUSED(dispatchLevel);
|
UNUSED(dispatchLevel);
|
||||||
|
|
||||||
|
FORT_CHECK_STACK();
|
||||||
|
|
||||||
switch (pkt->flags & FORT_PACKET_TYPE_MASK) {
|
switch (pkt->flags & FORT_PACKET_TYPE_MASK) {
|
||||||
case FORT_PACKET_TYPE_FLOW: {
|
case FORT_PACKET_TYPE_FLOW: {
|
||||||
fort_shaper_packet_free(&fort_device()->shaper, (PFORT_FLOW_PACKET) pkt, clonedNetBufList);
|
fort_shaper_packet_free(&fort_device()->shaper, (PFORT_FLOW_PACKET) pkt, clonedNetBufList);
|
||||||
@ -818,8 +820,10 @@ inline static ULONG fort_shaper_timer_process_queues(PFORT_SHAPER shaper, ULONG
|
|||||||
return new_active_io_bits;
|
return new_active_io_bits;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void NTAPI fort_shaper_timer_process(void)
|
static void fort_shaper_timer_process(void)
|
||||||
{
|
{
|
||||||
|
FORT_CHECK_STACK();
|
||||||
|
|
||||||
PFORT_SHAPER shaper = &fort_device()->shaper;
|
PFORT_SHAPER shaper = &fort_device()->shaper;
|
||||||
|
|
||||||
ULONG active_io_bits =
|
ULONG active_io_bits =
|
||||||
|
@ -564,6 +564,8 @@ static void NTAPI fort_pstree_notify(
|
|||||||
{
|
{
|
||||||
UNUSED(process);
|
UNUSED(process);
|
||||||
|
|
||||||
|
FORT_CHECK_STACK();
|
||||||
|
|
||||||
PFORT_PSTREE ps_tree = &fort_device()->ps_tree;
|
PFORT_PSTREE ps_tree = &fort_device()->ps_tree;
|
||||||
|
|
||||||
PFORT_PSNODE proc = fort_pstree_notify_process(ps_tree, process, processHandle, createInfo);
|
PFORT_PSNODE proc = fort_pstree_notify_process(ps_tree, process, processHandle, createInfo);
|
||||||
|
@ -41,6 +41,8 @@ static void NTAPI fort_syscb_power(PVOID context, PVOID event, PVOID specifics)
|
|||||||
{
|
{
|
||||||
UNUSED(context);
|
UNUSED(context);
|
||||||
|
|
||||||
|
FORT_CHECK_STACK();
|
||||||
|
|
||||||
if (event != (PVOID) PO_CB_SYSTEM_STATE_LOCK)
|
if (event != (PVOID) PO_CB_SYSTEM_STATE_LOCK)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -71,6 +73,8 @@ static void NTAPI fort_syscb_time(PVOID context, PVOID event, PVOID specifics)
|
|||||||
UNUSED(event);
|
UNUSED(event);
|
||||||
UNUSED(specifics);
|
UNUSED(specifics);
|
||||||
|
|
||||||
|
FORT_CHECK_STACK();
|
||||||
|
|
||||||
fort_stat_flags_set(&fort_device()->stat, FORT_STAT_SYSTEM_TIME_CHANGED, TRUE);
|
fort_stat_flags_set(&fort_device()->stat, FORT_STAT_SYSTEM_TIME_CHANGED, TRUE);
|
||||||
|
|
||||||
fort_device_on_system_time();
|
fort_device_on_system_time();
|
||||||
|
@ -25,6 +25,8 @@ static void NTAPI fort_timer_callback(PKDPC dpc, PFORT_TIMER timer, PVOID arg1,
|
|||||||
UNUSED(arg1);
|
UNUSED(arg1);
|
||||||
UNUSED(arg2);
|
UNUSED(arg2);
|
||||||
|
|
||||||
|
FORT_CHECK_STACK();
|
||||||
|
|
||||||
const UCHAR flags = fort_timer_flags(timer);
|
const UCHAR flags = fort_timer_flags(timer);
|
||||||
if ((flags & FORT_TIMER_ONESHOT) != 0) {
|
if ((flags & FORT_TIMER_ONESHOT) != 0) {
|
||||||
fort_timer_flags_set(timer, FORT_TIMER_RUNNING, FALSE);
|
fort_timer_flags_set(timer, FORT_TIMER_RUNNING, FALSE);
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
#include "fortdrv.h"
|
#include "fortdrv.h"
|
||||||
|
|
||||||
typedef void(NTAPI *FORT_TIMER_FUNC)(void);
|
typedef void (*FORT_TIMER_FUNC)(void);
|
||||||
|
|
||||||
#define FORT_TIMER_RUNNING 0x01
|
#define FORT_TIMER_RUNNING 0x01
|
||||||
#define FORT_TIMER_ONESHOT 0x02
|
#define FORT_TIMER_ONESHOT 0x02
|
||||||
|
@ -17,7 +17,7 @@ static void fort_worker_callback_run(
|
|||||||
|
|
||||||
static NTSTATUS fort_worker_callback_expand(PVOID context)
|
static NTSTATUS fort_worker_callback_expand(PVOID context)
|
||||||
{
|
{
|
||||||
PFORT_WORKER worker = (PFORT_WORKER) context;
|
PFORT_WORKER worker = context;
|
||||||
|
|
||||||
InterlockedDecrement16(&worker->queue_size);
|
InterlockedDecrement16(&worker->queue_size);
|
||||||
|
|
||||||
@ -32,6 +32,8 @@ static void NTAPI fort_worker_callback(PDEVICE_OBJECT device, PVOID context)
|
|||||||
{
|
{
|
||||||
UNUSED(device);
|
UNUSED(device);
|
||||||
|
|
||||||
|
FORT_CHECK_STACK();
|
||||||
|
|
||||||
const NTSTATUS status = fort_expand_stack(&fort_worker_callback_expand, context);
|
const NTSTATUS status = fort_expand_stack(&fort_worker_callback_expand, context);
|
||||||
UNUSED(status);
|
UNUSED(status);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user