Ticket #6310: 64bit_safe_kernel.patch
File 64bit_safe_kernel.patch, 8.7 KB (added by , 14 years ago) |
---|
-
src/system/kernel/debug/debug.cpp
1405 1405 "Welcome to syslog debug output!\nHaiku revision: %lu\n", 1406 1406 get_haiku_revision()); 1407 1407 syslog_write(revisionBuffer, 1408 std::min( length, (ssize_t)sizeof(revisionBuffer) - 1), false);1408 std::min((ssize_t)length, (ssize_t)sizeof(revisionBuffer) - 1), false); 1409 1409 1410 1410 add_debugger_command_etc("syslog", &cmd_dump_syslog, 1411 1411 "Dumps the syslog buffer.", … … 1962 1962 return B_BAD_ADDRESS; 1963 1963 1964 1964 // limit size to avoid address overflows 1965 size_t maxSize = std::min( size,1965 size_t maxSize = std::min((addr_t)size, 1966 1966 ~(addr_t)0 - std::max((addr_t)from, (addr_t)to) + 1); 1967 1967 // NOTE: Since strlcpy() determines the length of \a from, the source 1968 1968 // address might still overflow. -
src/system/kernel/device_manager/IOCache.cpp
242 242 off_t lineOffset = (offset >> fLineSizeShift) << fLineSizeShift; 243 243 244 244 // intersection of request and cache line 245 off_t cacheLineEnd = std::min(lineOffset + fLineSize, fDeviceCapacity);245 off_t cacheLineEnd = std::min(lineOffset + (off_t)fLineSize, fDeviceCapacity); 246 246 size_t requestLineLength 247 247 = std::min(cacheLineEnd - offset, (off_t)length); 248 248 -
src/system/kernel/device_manager/legacy_drivers.cpp
1374 1374 status = add_driver(imagePath.Path(), image->id); 1375 1375 if (status != B_OK) { 1376 1376 dprintf("legacy_driver_add_preloaded: Failed to add \"%s\": %s\n", 1377 image->name, strerror(status));1377 (char *)image->name, strerror(status)); 1378 1378 unload_kernel_add_on(image->id); 1379 1379 } 1380 1380 } -
src/system/kernel/lib/kernel_vsprintf.cpp
407 407 } 408 408 409 409 outBuffer.PutString("0x", 2); 410 number(outBuffer, ( uint32)va_arg(args, void *), 16, fieldWidth,410 number(outBuffer, (addr_t)va_arg(args, void *), 16, fieldWidth, 411 411 precision, flags); 412 412 continue; 413 413 -
src/system/kernel/module.cpp
1804 1804 for (image = args->preloaded_images; image != NULL; image = image->next) { 1805 1805 status_t status = register_preloaded_module_image(image); 1806 1806 if (status != B_OK && image->is_module) { 1807 dprintf("Could not register image \"%s\": %s\n", image->name,1807 dprintf("Could not register image \"%s\": %s\n", (char *)image->name, 1808 1808 strerror(status)); 1809 1809 } 1810 1810 } -
src/system/kernel/fs/vfs.cpp
320 320 static void query_free_fd(struct file_descriptor* descriptor); 321 321 static status_t query_close(struct file_descriptor* descriptor); 322 322 323 static status_t common_ioctl(struct file_descriptor* descriptor, u int32op,323 static status_t common_ioctl(struct file_descriptor* descriptor, ulong op, 324 324 void* buffer, size_t length); 325 325 static status_t common_read_stat(struct file_descriptor* descriptor, 326 326 struct stat* statData); … … 5837 5837 5838 5838 5839 5839 static status_t 5840 common_ioctl(struct file_descriptor* descriptor, u int32op, void* buffer,5840 common_ioctl(struct file_descriptor* descriptor, ulong op, void* buffer, 5841 5841 size_t length) 5842 5842 { 5843 5843 struct vnode* vnode = descriptor->u.vnode; -
src/system/kernel/fs/socket.cpp
243 243 244 244 245 245 static status_t 246 socket_ioctl(struct file_descriptor *descriptor, u int32op, void *buffer,246 socket_ioctl(struct file_descriptor *descriptor, ulong op, void *buffer, 247 247 size_t length) 248 248 { 249 249 return sStackInterface->ioctl(descriptor->u.socket, op, buffer, length); -
src/system/kernel/fs/vfs_request_io.cpp
152 152 153 153 // get the next file vecs 154 154 file_io_vec vecs[kMaxSubRequests]; 155 uint32vecCount = kMaxSubRequests;155 size_t vecCount = kMaxSubRequests; 156 156 status_t error = cookie->get_vecs(cookie->cookie, request, requestOffset, 157 157 requestLength, vecs, &vecCount); 158 158 if (error != B_OK && error != B_BUFFER_OVERFLOW) … … 270 270 271 271 while (error == B_OK && vecLength > 0) { 272 272 file_io_vec fileVecs[8]; 273 uint32fileVecCount = 8;273 size_t fileVecCount = 8; 274 274 error = getVecs(cookie, request, offset, vecLength, fileVecs, 275 275 &fileVecCount); 276 276 if (error != B_OK || fileVecCount == 0) -
src/system/kernel/messaging/KMessage.cpp
53 53 static inline void* 54 54 _Align(void* address, int32 offset = 0) 55 55 { 56 return (void*)((( uint32)address +offset + 3) & ~0x3);56 return (void*)(((addr_t)address + (addr_t)offset + 3) & ~0x3); 57 57 } 58 58 59 59 -
src/system/kernel/smp.cpp
1242 1242 cpu_status state = disable_interrupts(); 1243 1243 1244 1244 if (smp_get_num_cpus() > 1) { 1245 smp_send_broadcast_ici(SMP_MSG_CALL_FUNCTION, ( uint32)cookie,1245 smp_send_broadcast_ici(SMP_MSG_CALL_FUNCTION, (addr_t)cookie, 1246 1246 0, 0, (void *)func, SMP_MSG_FLAG_ASYNC); 1247 1247 } 1248 1248 … … 1264 1264 cpu_status state = disable_interrupts(); 1265 1265 1266 1266 if (smp_get_num_cpus() > 1) { 1267 smp_send_broadcast_ici(SMP_MSG_CALL_FUNCTION, ( uint32)cookie,1267 smp_send_broadcast_ici(SMP_MSG_CALL_FUNCTION, (addr_t)cookie, 1268 1268 0, 0, (void *)func, SMP_MSG_FLAG_SYNC); 1269 1269 } 1270 1270 -
src/system/kernel/vm/vm.cpp
3509 3509 // If the address is no kernel address, we just skip it. The 3510 3510 // architecture specific code has to deal with it. 3511 3511 if (!IS_KERNEL_ADDRESS(address)) { 3512 dprintf("reserve_boot_loader_ranges(): Skipping range: %p, %l u\n",3512 dprintf("reserve_boot_loader_ranges(): Skipping range: %p, %llu\n", 3513 3513 address, args->virtual_allocated_range[i].size); 3514 3514 continue; 3515 3515 } … … 4938 4938 return B_BAD_ADDRESS; 4939 4939 4940 4940 // limit size to avoid address overflows 4941 size_t maxSize = std::min( size,4941 size_t maxSize = std::min((addr_t)size, 4942 4942 ~(addr_t)0 - std::max((addr_t)from, (addr_t)to) + 1); 4943 4943 // NOTE: Since arch_cpu_user_strlcpy() determines the length of \a from, 4944 4944 // the source address might still overflow. -
src/system/kernel/elf.cpp
72 72 image_hash(void *_image, const void *_key, uint32 range) 73 73 { 74 74 struct elf_image_info *image = (struct elf_image_info *)_image; 75 image_id id = (image_id)_key;75 addr_t id = (addr_t)_key; 76 76 77 77 if (image != NULL) 78 78 return image->id % range; 79 79 80 return ( uint32)id % range;80 return (addr_t)id % range; 81 81 } 82 82 83 83 … … 86 86 image_compare(void *_image, const void *_key) 87 87 { 88 88 struct elf_image_info *image = (struct elf_image_info *)_image; 89 image_id id = (image_id)_key;89 addr_t id = (addr_t)_key; 90 90 91 91 return id - image->id; 92 92 } … … 1871 1871 1872 1872 // clean garbage brought by mmap (the region behind the file, 1873 1873 // at least parts of it are the bss and have to be zeroed) 1874 uint32 start = (uint32)regionAddress1874 addr_t start = (addr_t)regionAddress 1875 1875 + (programHeaders[i].p_vaddr % B_PAGE_SIZE) 1876 1876 + programHeaders[i].p_filesz; 1877 1877 uint32 amount = fileUpperBound