Sponsored Content
Top Forums Programming Kernel module - How to test if file doesn't exist Post 302501308 by disaster on Thursday 3rd of March 2011 09:20:51 AM
Old 03-03-2011
Kernel module - How to test if file doesn't exist

Hey,
I'm currently getting into some kernel module progamming. As a little exercise I want to read the headers out of an ELF file. My code is very simple, here is the important part:
Code:
struct file *fp;
/* ... */
fp = filp_open("some/file/on/my/pc", O_RDONLY, 0);
if(fp == NULL) {
     ALERT("NULLPOINTER"); // predefinied makro for output
     return;
}
if(fp->f_dentry == NULL) {
     ALERT("NULLPOINTER"); 
     return;
}
printk(KERN_INFO "Filname: %\n", fp->f_dentry->d_name.name);

(I know that might not make much sense, it's just to play around and see how the functions and data structures work).

As long as I choose a valid path and filename in the filp_open everything works fine, just as it should.
But if I enter a non-existent filename it always gets killed. The log says:
BUG: Unable to handle kernel NULL pointer dereference at 0000000a
Interestingly, the module always seems to get killed at the 2nd if-clause. That means that even if the file doesn't exist fd itself is not NULL, but then, once I simply check if f_dentry is a NULLpointer, the module crashes.
Can anyone tell me why and how can I write this short code in such a way that it can handle non-existent files (without creating them, but rather exiting with a simple error msg)
 

10 More Discussions You Might Find Interesting

1. SuSE

max number of slabs per kernel module (kernel 2.6.17, suse)

Hi All, Is there a max number of slabs that can be used per kernel module? I'm having a tough time finding out that kind of information, but the array 'node_zonelists' (mmzone.h) has a size of 5. I just want to avoid buffer overruns and other bad stuff. Cheers, Brendan (4 Replies)
Discussion started by: Brendan Kennedy
4 Replies

2. Linux

How to convert Linux Kernel built-in module into a loadable module

Hi all, I am working on USB data monitoring on Fedora Core 9. Kernel 2.6.25 has a built-in module (the one that isn't loadable, but compiles and links statically with the kernel during compilation) to snoop USB data. It is in <kernel_source_code>/drivers/usb/mon/. I need to know if I can... (0 Replies)
Discussion started by: anitemp
0 Replies

3. Shell Programming and Scripting

sftp mget where file doesn't exist BASH

I have a script that is working: #!/bin/bash sftp user@domain.com <<EOF cd somedir mget *.csv quit EOF but on a crontab I want to only pull newer files, so I want to do something like: while read ls current dir local file != true do mget that new file but I'm not sure the syntax... (2 Replies)
Discussion started by: unclecameron
2 Replies

4. Shell Programming and Scripting

File exist test

Can someone please shed light on why this may not be working, file does exist, but I get an error if ] then echo "No ${source_path}/${file_mask} found - ">> ${logfile} result=1 check_result ${result} "Failed to find file... (4 Replies)
Discussion started by: Pokermad
4 Replies

5. Shell Programming and Scripting

ln -s creates symlink in symlink, if [ -f ... ] says file that exists doesn't exist

Hi Forums, I got a little problem, I made a few modifications to the code of the launch script of a testing server(minecraft) and now updating is broken aswell as the automatic directory creation. These Lines somehow create an endless symlink that refers to itself and I don't know how to fix... (0 Replies)
Discussion started by: Xaymar
0 Replies

6. Solaris

User directory doesn't exist

Hii all, i create the user useradd -d /home/kk kk passwd kk when i tried to login to kk i get a error user directory doesn't exist then i tried useradd kkk passwd kkkwhen i tried to login to kkk i get the same error user directory doesn't exist. (4 Replies)
Discussion started by: vipinkumarr89
4 Replies

7. Programming

Kernel module - Check whether file (/dev node) exists

Hi, I'm pretty new to kernel coding and I'm working on a device driver that works with an existing framework. Basically my module will be loaded/unloaded multiple times and I'd like to create a register a class, driver, and create a /dev node on the first load only. The existing framework... (0 Replies)
Discussion started by: ThomasBrez
0 Replies

8. Shell Programming and Scripting

Need to generate a file with random data. /dev/[u]random doesn't exist.

Need to use dd to generate a large file from a sample file of random data. This is because I don't have /dev/urandom. I create a named pipe then: dd if=mynamed.fifo do=myfile.fifo bs=1024 count=1024 but when I cat a file to the fifo that's 1024 random bytes: cat randomfile.txt >... (7 Replies)
Discussion started by: Devyn
7 Replies

9. Linux

Unload kernel module at boot time (Debian Wheezy 7.2, 3.2.0-4-686-pae kernel)

Hi everyone, I am trying to prevent the ehci_hcd kernel module to load at boot time. Here's what I've tried so far: 1) Add the following line to /etc/modprobe.d/blacklist.conf (as suggested here): 2) Blacklisted the module by adding the following string to 3) Tried to blacklist the module... (0 Replies)
Discussion started by: gacanepa
0 Replies

10. Homework & Coursework Questions

Group Doesn't Exist

Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted! 1. The problem statement, all variables and given/known data: I'm able to create a group but when I'm trying to delete the group it keeps stating Group Doesn't Exist. I know... (2 Replies)
Discussion started by: GoBoyGo
2 Replies
GENDERS_LOAD_DATA(3)						    LIBGENDERS						      GENDERS_LOAD_DATA(3)

NAME
genders_load_data - read and parse a genders file SYNOPSIS
#include <genders.h> int genders_load_data(genders_t handle, const char *filename); DESCRIPTION
genders_load_data() read and parses the genders file indicated by filename. If filename is NULL, genders_load_data() will attempt to read and parse the default genders file defined by DEFAULT_GENDERS_FILE. handle is a genders handle created by genders_handle_create(3). After genders_load_data() is called, information about the genders file is stored in the genders handle passed in. This information is used by other genders C API functions. All future use of handle with other genders C API functions will be directly associated with the genders file indicated by filename (or the default genders file if filename is NULL). RETURN VALUES
On success, 0 is returned. On error, -1 is returned, and an error code is returned in handle. The error code can be retrieved via gen- ders_errnum(3) , and a description of the error code can be retrieved via genders_strerror(3). Error codes are defined in genders.h. ERRORS
GENDERS_ERR_NULLHANDLE The handle parameter is NULL. The genders handle must be created with genders_handle_create(3). GENDERS_ERR_OPEN The genders file indicated by filename cannot be opened for reading. GENDERS_ERR_READ Error reading the genders file indicated by filename. GENDERS_ERR_PARSE The genders file indicated by filename is incorrectly formatted. GENDERS_ERR_ISLOADED genders_load_data(3) has already been called with handle. GENDERS_ERR_OVERFLOW A line in the genders database exceeds the maximum allowed length. GENDERS_ERR_OUTMEM malloc(3) has failed internally, system is out of memory. GENDERS_ERR_MAGIC handle has an incorrect magic number. handle does not point to a genders handle or handle has been destroyed by genders_han- dle_destroy(3). GENDERS_ERR_INTERNAL An internal system error has occurred. FILES
/usr/include/genders.h SEE ALSO
libgenders(3), genders_handle_create(3), genders_handle_destroy(3), genders_errnum(3), genders_strerror(3) LLNL
August 2003 GENDERS_LOAD_DATA(3)
All times are GMT -4. The time now is 02:56 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy