int set_us_inst(struct conf_data *conf)
{
- int ret;
-
- ret = usm_start();
+ set_quiet(QT_OFF);
- return ret;
+ return 0;
}
int unset_us_inst(void)
{
- int ret;
-
- ret = usm_stop();
+ set_quiet(QT_ON);
- return ret;
+ return 0;
}
int set_syscall_file(struct conf_data *conf)
goto free_us_inst;
}
- return 0;
+ ret = usm_start();
+ if (ret)
+ goto free_us_inst;
+
+ return ret;
free_us_inst:
destroy_us_inst_data(us_inst);
return -EINVAL;
}
+ ret = usm_stop();
+ if (ret)
+ return ret;
+
conf.use_features0 = 0;
conf.use_features1 = 0;
ret = set_config(&conf);
#include "sspt_page.h"
#include "sspt_file.h"
#include <writer/swap_writer_module.h>
+#include <us_manager/us_manager.h>
static int entry_handler(struct uretprobe_instance *ri, struct pt_regs *regs)
{
struct us_ip *ip = container_of(ri->rp, struct us_ip, retprobe);
- entry_event(ip->args, regs, PT_US, PST_NONE);
+ if (get_quiet() == QT_OFF)
+ entry_event(ip->args, regs, PT_US, PST_NONE);
return 0;
}
addr = ip->offset & 0x01 ? addr | 0x01 : addr;
#endif
- exit_event(regs, addr, ret_addr);
+ if (get_quiet() == QT_OFF)
+ exit_event(regs, addr, ret_addr);
return 0;
}
#include "pf/pf_group.h"
#include "sspt/sspt_proc.h"
#include "helper.h"
+#include "us_manager.h"
#include <writer/event_filter.h>
/* FIXME: move /un/init_msg() elsewhere and remove this include */
/* ============================================================================
+ * === QUIET ===
+ * ============================================================================
+ */
+static enum quiet_type quiet = QT_ON;
+
+void set_quiet(enum quiet_type q)
+{
+ quiet = q;
+}
+EXPORT_SYMBOL_GPL(set_quiet);
+
+enum quiet_type get_quiet(void)
+{
+ return quiet;
+}
+EXPORT_SYMBOL_GPL(get_quiet);
+
+
+
+
+
+/* ============================================================================
* === US_FILTER ===
* ============================================================================
*/
#ifndef _US_MANAGER_H
#define _US_MANAGER_H
+
+enum quiet_type {
+ QT_ON,
+ QT_OFF
+};
+
+void set_quiet(enum quiet_type q);
+enum quiet_type get_quiet(void);
+
int usm_start(void);
int usm_stop(void);