diff --git a/.gitignore b/.gitignore index 625cd24..05065c9 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,8 @@ CMakeFiles CMakeScripts Testing Makefile +# exclude the oscdriver Makefile +!src/oscdriver/Makefile cmake_install.cmake install_manifest.txt compile_commands.json diff --git a/src/opensuperclone/CMakeLists.txt b/src/opensuperclone/CMakeLists.txt index 9b9fee5..4c1eca5 100644 --- a/src/opensuperclone/CMakeLists.txt +++ b/src/opensuperclone/CMakeLists.txt @@ -24,11 +24,11 @@ add_custom_command( LIST(APPEND RESOURCES opensuperclone_glade.h) add_custom_command( - OUTPUT opensuperclone_driver.h - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/driver/opensuperclone_driver.c opensuperclone_driver.c - COMMAND xxd -i opensuperclone_driver.c opensuperclone_driver.h + OUTPUT oscdriver.h + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/../oscdriver/oscdriver.c oscdriver.c + COMMAND xxd -i oscdriver.c oscdriver.h ) -LIST(APPEND RESOURCES opensuperclone_driver.h) +LIST(APPEND RESOURCES oscdriver.h) # Compile language files file(GLOB PO_LANGS LIST_DIRECTORIES true ${CMAKE_CURRENT_SOURCE_DIR}/locale/*) diff --git a/src/opensuperclone/io.c b/src/opensuperclone/io.c index 5c140c8..78e6c9a 100644 --- a/src/opensuperclone/io.c +++ b/src/opensuperclone/io.c @@ -4187,7 +4187,7 @@ int dump_hba_port_fis_command_data_ccc(unsigned long long hba_address, unsigned memset(driver_control_data_ccc.buffer, 0, sizeof(driver_control_data_ccc.buffer)); // driver_control_data_ccc.buffer = driver_buffer_ccc; - snprintf(driver_device_name_ccc, sizeof(driver_device_name_ccc), "/proc/%s%d", MAIN_DRIVER_IOCTL_NAME, process_id_ccc); + snprintf(driver_device_name_ccc, sizeof(driver_device_name_ccc), "/proc/%s", MAIN_DRIVER_IOCTL_NAME); if (main_driver_fd_ccc > 0) { close(main_driver_fd_ccc); @@ -4243,7 +4243,7 @@ int dump_hba_port_fis_command_data_ccc(unsigned long long hba_address, unsigned memset(driver_control_data_ccc.buffer, 0, sizeof(driver_control_data_ccc.buffer)); // driver_control_data_ccc.buffer = driver_buffer_ccc; - snprintf(driver_device_name_ccc, sizeof(driver_device_name_ccc), "/proc/%s%d", MAIN_DRIVER_IOCTL_NAME, process_id_ccc); + snprintf(driver_device_name_ccc, sizeof(driver_device_name_ccc), "/proc/%s", MAIN_DRIVER_IOCTL_NAME); if (main_driver_fd_ccc > 0) { close(main_driver_fd_ccc); @@ -4322,7 +4322,7 @@ int dump_hba_port_fis_command_data_ccc(unsigned long long hba_address, unsigned memset(driver_control_data_ccc.buffer, 0, sizeof(driver_control_data_ccc.buffer)); // driver_control_data_ccc.buffer = driver_buffer_ccc; - snprintf(driver_device_name_ccc, sizeof(driver_device_name_ccc), "/proc/%s%d", MAIN_DRIVER_IOCTL_NAME, process_id_ccc); + snprintf(driver_device_name_ccc, sizeof(driver_device_name_ccc), "/proc/%s", MAIN_DRIVER_IOCTL_NAME); if (main_driver_fd_ccc > 0) { close(main_driver_fd_ccc); @@ -4496,7 +4496,7 @@ int hba_test_ccc(void) memset(driver_control_data_ccc.buffer, 0, sizeof(driver_control_data_ccc.buffer)); // driver_control_data_ccc.buffer = driver_buffer_ccc; - snprintf(driver_device_name_ccc, sizeof(driver_device_name_ccc), "/proc/%s%d", MAIN_DRIVER_IOCTL_NAME, process_id_ccc); + snprintf(driver_device_name_ccc, sizeof(driver_device_name_ccc), "/proc/%s", MAIN_DRIVER_IOCTL_NAME); if (main_driver_fd_ccc > 0) { close(main_driver_fd_ccc); @@ -4563,7 +4563,7 @@ int hba_test_ccc(void) memset(driver_control_data_ccc.buffer, 0, sizeof(driver_control_data_ccc.buffer)); // driver_control_data_ccc.buffer = driver_buffer_ccc; - snprintf(driver_device_name_ccc, sizeof(driver_device_name_ccc), "/proc/%s%d", MAIN_DRIVER_IOCTL_NAME, process_id_ccc); + snprintf(driver_device_name_ccc, sizeof(driver_device_name_ccc), "/proc/%s", MAIN_DRIVER_IOCTL_NAME); if (main_driver_fd_ccc > 0) { close(main_driver_fd_ccc); @@ -4657,7 +4657,7 @@ int hba_test_ccc(void) memset(driver_control_data_ccc.buffer, 0, sizeof(driver_control_data_ccc.buffer)); // driver_control_data_ccc.buffer = driver_buffer_ccc; - snprintf(driver_device_name_ccc, sizeof(driver_device_name_ccc), "/proc/%s%d", MAIN_DRIVER_IOCTL_NAME, process_id_ccc); + snprintf(driver_device_name_ccc, sizeof(driver_device_name_ccc), "/proc/%s", MAIN_DRIVER_IOCTL_NAME); if (main_driver_fd_ccc > 0) { close(main_driver_fd_ccc); @@ -5179,7 +5179,7 @@ int hba_test_ccc(void) memset(driver_control_data_ccc.buffer, 0, sizeof(driver_control_data_ccc.buffer)); // driver_control_data_ccc.buffer = driver_buffer_ccc; - snprintf(driver_device_name_ccc, sizeof(driver_device_name_ccc), "/proc/%s%d", MAIN_DRIVER_IOCTL_NAME, process_id_ccc); + snprintf(driver_device_name_ccc, sizeof(driver_device_name_ccc), "/proc/%s", MAIN_DRIVER_IOCTL_NAME); if (main_driver_fd_ccc > 0) { close(main_driver_fd_ccc); @@ -5246,7 +5246,7 @@ int hba_test_ccc(void) memset(driver_control_data_ccc.buffer, 0, sizeof(driver_control_data_ccc.buffer)); // driver_control_data_ccc.buffer = driver_buffer_ccc; - snprintf(driver_device_name_ccc, sizeof(driver_device_name_ccc), "/proc/%s%d", MAIN_DRIVER_IOCTL_NAME, process_id_ccc); + snprintf(driver_device_name_ccc, sizeof(driver_device_name_ccc), "/proc/%s", MAIN_DRIVER_IOCTL_NAME); if (main_driver_fd_ccc > 0) { close(main_driver_fd_ccc); @@ -5340,7 +5340,7 @@ int hba_test_ccc(void) memset(driver_control_data_ccc.buffer, 0, sizeof(driver_control_data_ccc.buffer)); // driver_control_data_ccc.buffer = driver_buffer_ccc; - snprintf(driver_device_name_ccc, sizeof(driver_device_name_ccc), "/proc/%s%d", MAIN_DRIVER_IOCTL_NAME, process_id_ccc); + snprintf(driver_device_name_ccc, sizeof(driver_device_name_ccc), "/proc/%s", MAIN_DRIVER_IOCTL_NAME); if (main_driver_fd_ccc > 0) { close(main_driver_fd_ccc); @@ -10496,7 +10496,7 @@ int write_rebuild_assist_log_ccc(unsigned char data[LOG_PAGE_SIZE]) int start_driver_ccc(void) { - snprintf(driver_device_name_ccc, sizeof(driver_device_name_ccc), "/proc/%s%d", MAIN_DRIVER_IOCTL_NAME, process_id_ccc); + snprintf(driver_device_name_ccc, sizeof(driver_device_name_ccc), "/proc/%s", MAIN_DRIVER_IOCTL_NAME); if (main_driver_fd_ccc > 0) { close(main_driver_fd_ccc); @@ -10566,7 +10566,7 @@ int start_driver_ccc(void) int stop_driver_ccc(void) { - snprintf(driver_device_name_ccc, sizeof(driver_device_name_ccc), "/proc/%s%d", MAIN_DRIVER_IOCTL_NAME, process_id_ccc); + snprintf(driver_device_name_ccc, sizeof(driver_device_name_ccc), "/proc/%s", MAIN_DRIVER_IOCTL_NAME); if (main_driver_fd_ccc > 0) { close(main_driver_fd_ccc); @@ -10643,7 +10643,7 @@ int reset_driver_timers_ccc(void) int check_driver_ccc(void) { char name[256]; - snprintf(name, sizeof(name), "/proc/%s%d", MAIN_DRIVER_IOCTL_NAME, process_id_ccc); + snprintf(name, sizeof(name), "/proc/%s", MAIN_DRIVER_IOCTL_NAME); int fd = open(name, O_RDWR); if (fd == -1) { @@ -10663,7 +10663,7 @@ int map_driver_memory_ccc(void) driver_memory_mapped_ccc = 0; char name[256]; - snprintf(name, sizeof(name), "/proc/%s%d", MAIN_DRIVER_MMAP_NAME, process_id_ccc); + snprintf(name, sizeof(name), "/proc/%s", MAIN_DRIVER_MMAP_NAME); configfd = open(name, O_RDWR); if (configfd < 0) { @@ -10714,7 +10714,7 @@ int map_driver_memory_ccc(void) close(configfd); - snprintf(name, sizeof(name), "/proc/%s%d", MAIN_DRIVER_MMAPTB_NAME, process_id_ccc); + snprintf(name, sizeof(name), "/proc/%s", MAIN_DRIVER_MMAPTB_NAME); configfd = open(name, O_RDWR); if (configfd < 0) { @@ -10732,7 +10732,7 @@ int map_driver_memory_ccc(void) } close(configfd); - snprintf(name, sizeof(name), "/proc/%s%d", MAIN_DRIVER_MMAPMDB_NAME, process_id_ccc); + snprintf(name, sizeof(name), "/proc/%s", MAIN_DRIVER_MMAPMDB_NAME); configfd = open(name, O_RDWR); if (configfd < 0) { diff --git a/src/opensuperclone/opensuperclone.c b/src/opensuperclone/opensuperclone.c index 8d2ba48..b7bd43f 100644 --- a/src/opensuperclone/opensuperclone.c +++ b/src/opensuperclone/opensuperclone.c @@ -8,7 +8,7 @@ #include "clone_gui_common.h" #include "opensuperclone.h" #include "opensuperclone_help.h" -#include "opensuperclone_driver.h" +#include "oscdriver.h" // Function to handle ctrl-c void signal_callback_handler_ccc(int signum) @@ -1073,9 +1073,9 @@ void install_driver_ccc(void) return; } unsigned int i; - for (i = 0; i < opensuperclone_driver_c_len; i++) + for (i = 0; i < oscdriver_c_len; i++) { - fprintf(writefile, "%c", opensuperclone_driver_c[i]); + fprintf(writefile, "%c", oscdriver_c[i]); } int fp = fileno(writefile); fsync(fp); diff --git a/src/opensuperclone/driver/Makefile b/src/oscdriver/Makefile similarity index 61% rename from src/opensuperclone/driver/Makefile rename to src/oscdriver/Makefile index b4374ac..e268742 100644 --- a/src/opensuperclone/driver/Makefile +++ b/src/oscdriver/Makefile @@ -1,11 +1,16 @@ - -# Suppress module signature verification: Get rid of kernel messages like -# >> module verification failed: signature and/or required key missing - -# >> tainting kernel CONFIG_MODULE_SIG=n -KMOD = opensuperclone_driver -TMPS = $(KMOD).mod.* \ +KMOD = oscdriver + +IOCTL = hddscbdc +MMAP_M = hddscmap_m +MMAP_TB = hddscmap_tb +MMAP_MDB = hddscmap_mdb + +RMFLAGS = -vR + +TMPS = $(KMOD).mod \ + $(KMOD).mod.* \ .$(KMOD).*.cmd \ built-in.o \ .built-in.* \ @@ -23,9 +28,6 @@ default: $(MAKE) $(MAKE_FLAGS)$(KDIR) M=$$PWD endif -# Specify flags and other vars here. -RMFLAGS = -vR - .PHONY: all clean all: default @@ -34,9 +36,7 @@ clean: $(RM) $(RMFLAGS) $(KMOD).ko $(KMOD).o $(TMPS) install: - insmod $(KMOD).ko + insmod $(KMOD).ko ioctl=$(IOCTL) mmap_m=$(MMAP_M) mmap_tb=$(MMAP_TB) mmap_mdb=$(MMAP_MDB) uninstall: rmmod $(KMOD) - -# vim:set nu:et:ts=4:sw=4: diff --git a/src/oscdriver/dkms.conf b/src/oscdriver/dkms.conf new file mode 100644 index 0000000..b138194 --- /dev/null +++ b/src/oscdriver/dkms.conf @@ -0,0 +1,9 @@ +PACKAGE_NAME="oscdriver" +PACKAGE_VERSION="2.6.1" +MAKE="make" +INSTALL="make install" +CLEAN="make clean" +BUILT_MODULE_NAME="$PACKAGE_NAME" +DEST_MODULE_LOCATION="/kernel/drivers/misc" +REMAKE_INITRD="no" +AUTOINSTALL="no" \ No newline at end of file diff --git a/src/opensuperclone/driver/opensuperclone_driver.c b/src/oscdriver/oscdriver.c similarity index 100% rename from src/opensuperclone/driver/opensuperclone_driver.c rename to src/oscdriver/oscdriver.c