firewire: qualify config ROM cache pointers as const pointers

Several config ROM related functions only peek at the ROM cache; mark
their arguments as const pointers.  Ditto fw_device.config_rom and
fw_unit.directory, as the memory behind them is meant to be write-once.

Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
This commit is contained in:
Stefan Richter 2009-12-26 01:44:10 +01:00
parent 3c2c58cb33
commit 13b302d0a2
3 changed files with 20 additions and 18 deletions

View File

@ -43,7 +43,7 @@
#include "core.h" #include "core.h"
void fw_csr_iterator_init(struct fw_csr_iterator *ci, u32 * p) void fw_csr_iterator_init(struct fw_csr_iterator *ci, const u32 *p)
{ {
ci->p = p + 1; ci->p = p + 1;
ci->end = ci->p + (p[0] >> 16); ci->end = ci->p + (p[0] >> 16);
@ -59,7 +59,7 @@ int fw_csr_iterator_next(struct fw_csr_iterator *ci, int *key, int *value)
} }
EXPORT_SYMBOL(fw_csr_iterator_next); EXPORT_SYMBOL(fw_csr_iterator_next);
static u32 *search_leaf(u32 *directory, int search_key) static const u32 *search_leaf(const u32 *directory, int search_key)
{ {
struct fw_csr_iterator ci; struct fw_csr_iterator ci;
int last_key = 0, key, value; int last_key = 0, key, value;
@ -76,7 +76,7 @@ static u32 *search_leaf(u32 *directory, int search_key)
return NULL; return NULL;
} }
static int textual_leaf_to_string(u32 *block, char *buf, size_t size) static int textual_leaf_to_string(const u32 *block, char *buf, size_t size)
{ {
unsigned int quadlets, i; unsigned int quadlets, i;
char c; char c;
@ -116,9 +116,9 @@ static int textual_leaf_to_string(u32 *block, char *buf, size_t size)
* the immediate entry with @key. The string is zero-terminated. * the immediate entry with @key. The string is zero-terminated.
* Returns strlen(buf) or a negative error code. * Returns strlen(buf) or a negative error code.
*/ */
int fw_csr_string(u32 *directory, int key, char *buf, size_t size) int fw_csr_string(const u32 *directory, int key, char *buf, size_t size)
{ {
u32 *leaf = search_leaf(directory, key); const u32 *leaf = search_leaf(directory, key);
if (!leaf) if (!leaf)
return -ENOENT; return -ENOENT;
@ -128,7 +128,7 @@ EXPORT_SYMBOL(fw_csr_string);
static bool is_fw_unit(struct device *dev); static bool is_fw_unit(struct device *dev);
static int match_unit_directory(u32 *directory, u32 match_flags, static int match_unit_directory(const u32 *directory, u32 match_flags,
const struct ieee1394_device_id *id) const struct ieee1394_device_id *id)
{ {
struct fw_csr_iterator ci; struct fw_csr_iterator ci;
@ -262,7 +262,7 @@ static ssize_t show_immediate(struct device *dev,
struct config_rom_attribute *attr = struct config_rom_attribute *attr =
container_of(dattr, struct config_rom_attribute, attr); container_of(dattr, struct config_rom_attribute, attr);
struct fw_csr_iterator ci; struct fw_csr_iterator ci;
u32 *dir; const u32 *dir;
int key, value, ret = -ENOENT; int key, value, ret = -ENOENT;
down_read(&fw_device_rwsem); down_read(&fw_device_rwsem);
@ -293,7 +293,7 @@ static ssize_t show_text_leaf(struct device *dev,
{ {
struct config_rom_attribute *attr = struct config_rom_attribute *attr =
container_of(dattr, struct config_rom_attribute, attr); container_of(dattr, struct config_rom_attribute, attr);
u32 *dir; const u32 *dir;
size_t bufsize; size_t bufsize;
char dummy_buf[2]; char dummy_buf[2];
int ret; int ret;
@ -421,7 +421,7 @@ static ssize_t guid_show(struct device *dev,
return ret; return ret;
} }
static int units_sprintf(char *buf, u32 *directory) static int units_sprintf(char *buf, const u32 *directory)
{ {
struct fw_csr_iterator ci; struct fw_csr_iterator ci;
int key, value; int key, value;
@ -503,7 +503,8 @@ static int read_rom(struct fw_device *device,
*/ */
static int read_bus_info_block(struct fw_device *device, int generation) static int read_bus_info_block(struct fw_device *device, int generation)
{ {
u32 *rom, *stack, *old_rom, *new_rom; const u32 *old_rom, *new_rom;
u32 *rom, *stack;
u32 sp, key; u32 sp, key;
int i, end, length, ret = -1; int i, end, length, ret = -1;

View File

@ -1014,7 +1014,8 @@ static int sbp2_add_logical_unit(struct sbp2_target *tgt, int lun_entry)
return 0; return 0;
} }
static int sbp2_scan_logical_unit_dir(struct sbp2_target *tgt, u32 *directory) static int sbp2_scan_logical_unit_dir(struct sbp2_target *tgt,
const u32 *directory)
{ {
struct fw_csr_iterator ci; struct fw_csr_iterator ci;
int key, value; int key, value;
@ -1027,7 +1028,7 @@ static int sbp2_scan_logical_unit_dir(struct sbp2_target *tgt, u32 *directory)
return 0; return 0;
} }
static int sbp2_scan_unit_dir(struct sbp2_target *tgt, u32 *directory, static int sbp2_scan_unit_dir(struct sbp2_target *tgt, const u32 *directory,
u32 *model, u32 *firmware_revision) u32 *model, u32 *firmware_revision)
{ {
struct fw_csr_iterator ci; struct fw_csr_iterator ci;

View File

@ -65,13 +65,13 @@
#define CSR_DIRECTORY_ID 0x20 #define CSR_DIRECTORY_ID 0x20
struct fw_csr_iterator { struct fw_csr_iterator {
u32 *p; const u32 *p;
u32 *end; const u32 *end;
}; };
void fw_csr_iterator_init(struct fw_csr_iterator *ci, u32 *p); void fw_csr_iterator_init(struct fw_csr_iterator *ci, const u32 *p);
int fw_csr_iterator_next(struct fw_csr_iterator *ci, int *key, int *value); int fw_csr_iterator_next(struct fw_csr_iterator *ci, int *key, int *value);
int fw_csr_string(u32 *directory, int key, char *buf, size_t size); int fw_csr_string(const u32 *directory, int key, char *buf, size_t size);
extern struct bus_type fw_bus_type; extern struct bus_type fw_bus_type;
@ -163,7 +163,7 @@ struct fw_device {
struct mutex client_list_mutex; struct mutex client_list_mutex;
struct list_head client_list; struct list_head client_list;
u32 *config_rom; const u32 *config_rom;
size_t config_rom_length; size_t config_rom_length;
int config_rom_retries; int config_rom_retries;
unsigned is_local:1; unsigned is_local:1;
@ -205,7 +205,7 @@ int fw_device_enable_phys_dma(struct fw_device *device);
*/ */
struct fw_unit { struct fw_unit {
struct device device; struct device device;
u32 *directory; const u32 *directory;
struct fw_attribute_group attribute_group; struct fw_attribute_group attribute_group;
}; };