Android Mediatek USB 核心驱动中增加设备 PID/VID 检查

简介: Android Mediatek USB 核心驱动中增加设备 PID/VID 检查

这个是在mtk usb核心驱动增加的检查文件 , 并且对vid、pid进行过滤的。

这个修改主要在Mediatek  USB 核心驱动的 usb_new_device 函数中增加了设备 PID/VID 的检查。当新的 USB 设备连接时,驱动会检查设备的 PID/VID 是否在预定义的列表中,如果不在,则不会继续初始化该设备。

修改的文件:

  1. kernel-3.10/drivers/usb/core/hub.c

文件修改说明:

  1. hub.c: 在 usb_new_device 函数中,增加了设备 PID/VID 的检查。首先,打开预定义的设备列表文件,然后读取文件内容到缓冲区。接着,将设备的 PID/VID 转换为字符串格式,并在缓冲区中查找该字符串。如果找不到,则跳转到 fail 标签,不会继续初始化该设备。
 kernel-3.10/drivers/usb/core/hub.c | 38 +++++++++++++++++++++++++++++++++++++-
 1 file changed, 37 insertions(+), 1 deletion(-)
 mode change 100644 => 100755 kernel-3.10/drivers/usb/core/hub.c
 
diff --git a/kernel-3.10/drivers/usb/core/hub.c b/kernel-3.10/drivers/usb/core/hub.c
old mode 100644
new mode 100755
index 812d3a4..2a4b4a1
--- a/kernel-3.10/drivers/usb/core/hub.c
+++ b/kernel-3.10/drivers/usb/core/hub.c
@@ -28,6 +28,9 @@
 #include <linux/random.h>
 #include <linux/pm_qos.h>
 
+#include <linux/fs.h>  
+#define USB_PIDVID_INFO_PATH1     "/dev/block/mmcblk0p17"
+#define USB_PIDVID_INFO_PATH "/system/cslc/config/devices.lst"
 #include <asm/uaccess.h>
 #include <asm/byteorder.h>
 #include "hub.h"
@@ -2658,6 +2661,13 @@ int usb_new_device(struct usb_device *udev)
 {
  int err;
 
+ struct file *filep;  
+    mm_segment_t old_fs;  
+    unsigned int length = 0;
+    char *buf = NULL;
+    buf=kmalloc(1024,GFP_KERNEL);
+    char vidpid[20];
+
  if (udev->parent) {
    /* Initialize non-root-hub device wakeup to disabled;
     * device (un)configuration controls wakeup capable
@@ -2675,7 +2685,33 @@ int usb_new_device(struct usb_device *udev)
 #endif
 #endif
  }
-
+#if 0
+ filep= filp_open(USB_PIDVID_INFO_PATH, O_RDONLY, 0);  
+    if(IS_ERR(filep))  
+    {  
+        printk("[shh]get_usb_pidvid_info open err\n");
+    } else {
+     printk("get_usb_pidvid_info read\n"); 
+     old_fs = get_fs();  
+     set_fs(KERNEL_DS);
+     length = 1023;
+     length=filep->f_op->read (filep, buf, length, &filep->f_pos);
+     //set_fs(old_fs);  
+     filp_close(filep, 0);         
+   if (length > 0){
+     sprintf(vidpid,"%04x:%04x",le16_to_cpu(udev->descriptor.idProduct),le16_to_cpu(udev->descriptor.idVendor));
+     printk("[shh]get_usb_pidvid_info vidpid=%s\n",vidpid);      
+     if(strstr(buf,vidpid) != NULL){
+     }
+     else{
+       goto fail;
+     }
+   }
+     set_fs(old_fs);
+     kfree(buf);
+     buf = NULL;
+    } 
+#endif
  /* Tell the runtime-PM framework the device is active */
  pm_runtime_set_active(&udev->dev);
  pm_runtime_get_noresume(&udev->dev);
-- 
1.9.1




相关文章
|
8月前
|
存储 Android开发
如何查看Flutter应用在Android设备上已被撤销的权限?
如何查看Flutter应用在Android设备上已被撤销的权限?
342 64
|
8月前
|
存储 Android开发 数据安全/隐私保护
如何在Android设备上撤销Flutter应用程序的所有权限?
如何在Android设备上撤销Flutter应用程序的所有权限?
466 64
|
8月前
|
缓存 Android开发 开发者
Flutter环境配置完成后,如何在Android设备上运行Flutter应用程序?
Flutter环境配置完成后,如何在Android设备上运行Flutter应用程序?
1361 62
|
8月前
|
开发工具 Android开发 开发者
在Android设备上运行Flutter应用程序时,如果遇到设备未授权的问题该如何解决?
在Android设备上运行Flutter应用程序时,如果遇到设备未授权的问题该如何解决?
475 61
|
Android开发
Android基于gradle task检查各个module之间资源文件冲突情况
Android基于gradle task检查各个module之间资源文件冲突情况
Android基于gradle task检查各个module之间资源文件冲突情况
|
9月前
|
监控 Shell Linux
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。
|
Android开发
Android gradle task任务检查各个module之间资源文件冲突.md
Android gradle task任务检查各个module之间资源文件冲突.md
Android gradle task任务检查各个module之间资源文件冲突.md
|
Android开发
基于Amlogic 安卓9.0, 驱动简说(五):基于GPIO、LED子系统的LED驱动
这篇文章是关于如何在基于Amlogic T972的Android 9.0系统上,使用GPIO和LED子系统来实现LED驱动的教程,包括了DTS设备树配置、驱动源码编写以及如何在用户空间控制LED的亮度和开关。
555 0
基于Amlogic 安卓9.0, 驱动简说(五):基于GPIO、LED子系统的LED驱动
|
Android开发
基于Amlogic 安卓9.0, 驱动简说(四):Platform平台驱动,驱动与设备的分离
本文介绍了如何在基于Amlogic T972的Android 9.0系统上使用Platform平台驱动框架和设备树(DTS),实现设备与驱动的分离,并通过静态枚举在设备树中描述设备,自动触发驱动程序的加载和设备创建。
338 0
基于Amlogic 安卓9.0, 驱动简说(四):Platform平台驱动,驱动与设备的分离
|
2月前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
288 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡

热门文章

最新文章