#include <linux/fs.h>
#include <linux/mm.h>
#include <linux/mman.h>
+#include <linux/module.h>
#include <linux/hardirq.h>
#include <linux/list.h>
#include <us_manager/us_manager_common.h>
#include <us_manager/sspt/sspt_proc.h>
-#include "preload_pd.h"
-#include "preload_threads.h"
-#include "preload_debugfs.h"
-#include "preload_storage.h"
-#include "preload.h"
+#include "loader_pd.h"
+#include "loader.h"
+#include "loader_debugfs.h"
+#include "loader_storage.h"
+#include "loader_defs.h"
struct pd_t {
unsigned long loader_base;
MAP_ANONYMOUS | MAP_PRIVATE, 0);
up_write(¤t->mm->mmap_sem);
if (IS_ERR_VALUE(page)) {
- printk(KERN_ERR PRELOAD_PREFIX
+ printk(KERN_ERR LOADER_PREFIX
"Cannot alloc page for %u\n", current->tgid);
goto create_pd_fail;
}
/* set handler path */
if (copy_to_user((void __user *)dest, src, len) != 0) {
- printk(KERN_ERR PRELOAD_PREFIX
+ printk(KERN_ERR LOADER_PREFIX
"Cannot copy string to user!\n");
return 0;
}
static void __set_ld_mapped(struct pd_t *pd, struct mm_struct *mm)
{
struct vm_area_struct *vma;
- struct dentry *ld = preload_debugfs_get_loader_dentry();
+ struct dentry *ld = ld_get_loader_dentry();
down_read(&mm->mmap_sem);
if (ld) {
size_t len;
int ret = 0;
- handlers = preload_storage_get_handlers();
+ handlers = ls_get_handlers();
if (handlers == NULL)
return -EINVAL;
hd = kzalloc(sizeof(*hd), GFP_ATOMIC);
if (hd == NULL) {
- printk(KERN_ERR PRELOAD_PREFIX "No atomic mem!\n");
+ printk(KERN_ERR LOADER_PREFIX "No atomic mem!\n");
ret = -ENOMEM;
goto get_handlers_out;
}
hd->dentry = bin->dentry;
hd->offset = offset;
__set_handler_mapped(hd, task->mm);
- __set_attempts(hd, PRELOAD_MAX_ATTEMPTS);
+ __set_attempts(hd, LOADER_MAX_ATTEMPTS);
list_add_tail(&hd->list, &pd->handlers);
/* inc handlers path's on page */
get_handlers_out:
/* TODO Cleanup already created */
- preload_storage_put_handlers();
+ ls_put_handlers();
return ret;
}
-enum ps_t preload_pd_get_state(struct hd_t *hd)
+enum ps_t lpd_get_state(struct hd_t *hd)
{
if (hd == NULL)
return 0;
return __get_state(hd);
}
+EXPORT_SYMBOL_GPL(lpd_get_state);
-void preload_pd_set_state(struct hd_t *hd, enum ps_t state)
+void lpd_set_state(struct hd_t *hd, enum ps_t state)
{
if (hd == NULL) {
- printk(PRELOAD_PREFIX "%d: No handler data! Current %d %s\n",
+ printk(LOADER_PREFIX "%d: No handler data! Current %d %s\n",
__LINE__, current->tgid, current->comm);
return;
}
__set_state(hd, state);
}
-unsigned long preload_pd_get_loader_base(struct pd_t *pd)
+unsigned long lpd_get_loader_base(struct pd_t *pd)
{
if (pd == NULL)
return 0;
return __get_loader_base(pd);
}
-void preload_pd_set_loader_base(struct pd_t *pd, unsigned long vaddr)
+void lpd_set_loader_base(struct pd_t *pd, unsigned long vaddr)
{
__set_loader_base(pd, vaddr);
}
-unsigned long preload_pd_get_handlers_base(struct hd_t *hd)
+unsigned long lpd_get_handlers_base(struct hd_t *hd)
{
if (hd == NULL)
return 0;
return __get_handlers_base(hd);
}
+EXPORT_SYMBOL_GPL(lpd_get_handlers_base);
-void preload_pd_set_handlers_base(struct hd_t *hd, unsigned long vaddr)
+void lpd_set_handlers_base(struct hd_t *hd, unsigned long vaddr)
{
__set_handlers_base(hd, vaddr);
}
-char __user *preload_pd_get_path(struct pd_t *pd, struct hd_t *hd)
+char __user *lpd_get_path(struct pd_t *pd, struct hd_t *hd)
{
unsigned long page = __get_data_page(pd);
unsigned long offset = __get_offset(hd);
-void *preload_pd_get_handle(struct hd_t *hd)
+void *lpd_get_handle(struct hd_t *hd)
{
if (hd == NULL)
return NULL;
return __get_handle(hd);
}
-void preload_pd_set_handle(struct hd_t *hd, void __user *handle)
+void lpd_set_handle(struct hd_t *hd, void __user *handle)
{
if (hd == NULL) {
- printk(PRELOAD_PREFIX "%d: No handler data! Current %d %s\n",
+ printk(LOADER_PREFIX "%d: No handler data! Current %d %s\n",
__LINE__, current->tgid, current->comm);
return;
}
__set_handle(hd, handle);
}
-long preload_pd_get_attempts(struct hd_t *hd)
+long lpd_get_attempts(struct hd_t *hd)
{
if (hd == NULL)
return -EINVAL;
return __get_attempts(hd);
}
-void preload_pd_dec_attempts(struct hd_t *hd)
+void lpd_dec_attempts(struct hd_t *hd)
{
long attempts;
if (hd == NULL) {
- printk(PRELOAD_PREFIX "%d: No handler data! Current %d %s\n",
+ printk(LOADER_PREFIX "%d: No handler data! Current %d %s\n",
__LINE__, current->tgid, current->comm);
return;
}
__set_attempts(hd, attempts);
}
-struct dentry *preload_pd_get_dentry(struct hd_t *hd)
+struct dentry *lpd_get_dentry(struct hd_t *hd)
{
return hd->dentry;
}
-struct pd_t *preload_pd_get_parent_pd(struct hd_t *hd)
+struct pd_t *lpd_get_parent_pd(struct hd_t *hd)
{
return hd->parent;
}
+EXPORT_SYMBOL_GPL(lpd_get_parent_pd);
-struct pd_t *preload_pd_get(struct sspt_proc *proc)
+struct pd_t *lpd_get(struct sspt_proc *proc)
{
return (struct pd_t *)proc->private_data;
}
+EXPORT_SYMBOL_GPL(lpd_get);
-struct hd_t *preload_pd_get_hd(struct pd_t *pd, struct dentry *dentry)
+struct hd_t *lpd_get_hd(struct pd_t *pd, struct dentry *dentry)
{
struct hd_t *hd;
return NULL;
}
+EXPORT_SYMBOL_GPL(lpd_get_hd);
static struct pd_t *do_create_pd(struct task_struct *task)
{
kfree(pd);
create_pd_exit:
- printk(KERN_ERR PRELOAD_PREFIX "do_pd_create_pd: error=%d\n", ret);
+ printk(KERN_ERR LOADER_PREFIX "do_pd_create_pd: error=%d\n", ret);
return NULL;
}
{
struct pd_t *pd;
- pd = do_create_pd(proc->task);
+ pd = do_create_pd(proc->leader);
return (void *)pd;
}
.priv_destroy = pd_destroy
};
-int preload_pd_init(void)
+int lpd_init(void)
{
int ret;
return ret;
}
-void preload_pd_uninit(void)
+void lpd_uninit(void)
{
sspt_proc_cb_set(NULL);